diff --git a/src/xenia/kernel/xboxkrnl/xboxkrnl_threading.cc b/src/xenia/kernel/xboxkrnl/xboxkrnl_threading.cc index 901f82e2d..64dbe7b1a 100644 --- a/src/xenia/kernel/xboxkrnl/xboxkrnl_threading.cc +++ b/src/xenia/kernel/xboxkrnl/xboxkrnl_threading.cc @@ -775,13 +775,11 @@ dword_result_t NtReleaseSemaphore_entry(dword_t sem_handle, bool success = sem->ReleaseSemaphore((int32_t)release_count, &previous_count); if (!success) { - // Releasing would exceed the semaphore's maximum count - // Windows returns STATUS_SEMAPHORE_LIMIT_EXCEEDED (0x0000012B) XELOGW( "NtReleaseSemaphore: release_count={} would exceed maximum (current " "count={})", uint32_t(release_count), previous_count); - result = 0x0000012B; + result = X_STATUS_SEMAPHORE_LIMIT_EXCEEDED; } } else { result = X_STATUS_INVALID_HANDLE; diff --git a/src/xenia/xbox.h b/src/xenia/xbox.h index 8ba7d32a7..f159a58ab 100644 --- a/src/xenia/xbox.h +++ b/src/xenia/xbox.h @@ -60,6 +60,7 @@ typedef uint32_t X_STATUS; #define X_STATUS_OBJECT_NAME_COLLISION ((X_STATUS)0xC0000035L) #define X_STATUS_INVALID_PAGE_PROTECTION ((X_STATUS)0xC0000045L) #define X_STATUS_MUTANT_NOT_OWNED ((X_STATUS)0xC0000046L) +#define X_STATUS_SEMAPHORE_LIMIT_EXCEEDED ((X_STATUS)0xC0000047L) #define X_STATUS_THREAD_IS_TERMINATING ((X_STATUS)0xC000004BL) #define X_STATUS_PROCEDURE_NOT_FOUND ((X_STATUS)0xC000007AL) #define X_STATUS_INVALID_IMAGE_FORMAT ((X_STATUS)0xC000007BL)