فهرست منبع

Kernel: Don't re-assign object's handle when duplicating one

Yuri Kunde Schlesner 11 سال پیش
والد
کامیت
d751de7341
2فایلهای تغییر یافته به همراه3 افزوده شده و 2 حذف شده
  1. 2 1
      src/core/hle/kernel/kernel.cpp
  2. 1 1
      src/core/hle/kernel/kernel.h

+ 2 - 1
src/core/hle/kernel/kernel.cpp

@@ -44,7 +44,8 @@ ResultVal<Handle> HandleTable::Create(Object* obj) {
     objects[slot] = obj;
 
     Handle handle = generation | (slot << 15);
-    obj->handle = handle;
+    if (obj->handle == INVALID_HANDLE)
+        obj->handle = handle;
     return MakeResult<Handle>(handle);
 }
 

+ 1 - 1
src/core/hle/kernel/kernel.h

@@ -52,7 +52,7 @@ class HandleTable;
 
 class Object : NonCopyable {
     friend class HandleTable;
-    u32 handle;
+    u32 handle = INVALID_HANDLE;
 public:
     virtual ~Object() {}
     Handle GetHandle() const { return handle; }