diff options
| author | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2014-12-31 09:20:48 -0200 | 
|---|---|---|
| committer | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2015-01-09 19:43:51 -0200 | 
| commit | d751de7341029dc8335a6766dcdf5c8dc047f0bc (patch) | |
| tree | 377af7443462b50731ce8a817efbc6803a2b3d3c | |
| parent | 6ae12424df58f0ea171fc75ca4b700ab1fffc192 (diff) | |
Kernel: Don't re-assign object's handle when duplicating one
| -rw-r--r-- | src/core/hle/kernel/kernel.cpp | 3 | ||||
| -rw-r--r-- | src/core/hle/kernel/kernel.h | 2 | 
2 files changed, 3 insertions, 2 deletions
| diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index a1bc6c5d8..7d40dcbee 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/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);  } diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h index 31d80c7ac..a35055724 100644 --- a/src/core/hle/kernel/kernel.h +++ b/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; } | 
