From c34601469be24cc4d1595c7c5355c69522904fdc Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Tue, 10 Feb 2015 23:32:12 -0800 Subject: [PATCH] Fixing overlapped return from XamUserReadProfileSettings. --- src/xenia/kernel/xam_user.cc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/xenia/kernel/xam_user.cc b/src/xenia/kernel/xam_user.cc index 06b28e0fe..557c1170a 100644 --- a/src/xenia/kernel/xam_user.cc +++ b/src/xenia/kernel/xam_user.cc @@ -125,7 +125,12 @@ SHIM_CALL XamUserReadProfileSettings_shim(PPCContext* ppc_state, if (user_index) { // Only support user 0. - SHIM_SET_RETURN_32(X_ERROR_NOT_FOUND); + if (overlapped_ptr) { + state->CompleteOverlappedImmediate(overlapped_ptr, X_ERROR_NOT_FOUND); + SHIM_SET_RETURN_32(X_ERROR_IO_PENDING); + } else { + SHIM_SET_RETURN_32(X_ERROR_NOT_FOUND); + } return; } const auto& user_profile = state->user_profile(); @@ -167,8 +172,10 @@ SHIM_CALL XamUserReadProfileSettings_shim(PPCContext* ppc_state, if (overlapped_ptr) { state->CompleteOverlappedImmediate(overlapped_ptr, X_ERROR_INVALID_PARAMETER); + SHIM_SET_RETURN_32(X_ERROR_IO_PENDING); + } else { + SHIM_SET_RETURN_32(X_ERROR_INVALID_PARAMETER); } - SHIM_SET_RETURN_32(X_ERROR_INVALID_PARAMETER); return; } SHIM_SET_MEM_32(buffer_size_ptr, size_needed); @@ -176,8 +183,10 @@ SHIM_CALL XamUserReadProfileSettings_shim(PPCContext* ppc_state, if (overlapped_ptr) { state->CompleteOverlappedImmediate(overlapped_ptr, X_ERROR_INSUFFICIENT_BUFFER); + SHIM_SET_RETURN_32(X_ERROR_IO_PENDING); + } else { + SHIM_SET_RETURN_32(X_ERROR_INSUFFICIENT_BUFFER); } - SHIM_SET_RETURN_32(X_ERROR_INSUFFICIENT_BUFFER); return; }