From 50b42371a0bf0caad4b1aa0e6fe73892d597663a Mon Sep 17 00:00:00 2001 From: Gliniak Date: Mon, 13 Nov 2023 21:16:25 +0100 Subject: [PATCH] [Kernel] Restore assigning pointer to object_type_ptr. This should at least help with latest requirement for protect_zero in many titles. + Removed useless comment --- src/xenia/kernel/xobject.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/xenia/kernel/xobject.cc b/src/xenia/kernel/xobject.cc index 9f896258a..f52bc2859 100644 --- a/src/xenia/kernel/xobject.cc +++ b/src/xenia/kernel/xobject.cc @@ -323,11 +323,16 @@ uint8_t* XObject::CreateNative(uint32_t size) { SetNativePointer(mem + sizeof(X_OBJECT_HEADER), true); auto header = memory()->TranslateVirtual(mem); - // todo: should check whether header->flags = OBJECT_HEADER_IS_TITLE_OBJECT; header->pointer_count = 1; header->handle_count = 0; - header->object_type_ptr = 0; + + // Added to prevent having nullptr crashes on semaphore. + // This should probably work differently, but for now it is good enough (hopefully). + auto object_type = memory()->SystemHeapAlloc(sizeof(X_OBJECT_TYPE)); + if (object_type) { + header->object_type_ptr = object_type; + } return memory()->TranslateVirtual(guest_object_ptr_); }