瀏覽代碼

Update src/core/hle/kernel/svc.cpp

Co-authored-by: liamwhite <liamwhite@users.noreply.github.com>
comex 4 年之前
父節點
當前提交
a14438d013
共有 1 個文件被更改,包括 14 次插入6 次删除
  1. 14 6
      src/core/hle/kernel/svc.cpp

+ 14 - 6
src/core/hle/kernel/svc.cpp

@@ -917,17 +917,25 @@ static ResultCode GetInfo(Core::System& system, u64* result, u64 info_id, Handle
         *result = system.Kernel().CurrentScheduler()->GetIdleThread()->GetCpuTime();
         return ResultSuccess;
     }
-    case GetInfoType::MesosphereCurrentProcess: {
+        // Verify the input handle is invalid.
         R_UNLESS(handle == InvalidHandle, ResultInvalidHandle);
+
+        // Verify the sub-type is valid.
         R_UNLESS(info_sub_id == 0, ResultInvalidCombination);
 
-        KProcess* const current_process = system.Kernel().CurrentProcess();
-        Handle process_handle{};
-        R_TRY(current_process->GetHandleTable().Add(&process_handle, current_process));
+        // Get the handle table.
+        KProcess* current_process = system.Kernel().CurrentProcess();
+        KHandleTable& handle_table = current_process->GetHandleTable();
+
+        // Get a new handle for the current process.
+        Handle tmp;
+        R_TRY(handle_table.Add(&tmp, current_process));
 
-        *result = process_handle;
+        // Set the output.
+        *result = tmp;
+        
+        // We succeeded.
         return ResultSuccess;
-    }
     default:
         LOG_ERROR(Kernel_SVC, "Unimplemented svcGetInfo id=0x{:016X}", info_id);
         return ResultInvalidEnumValue;