diff --git a/src/xenia/kernel/xam/xam_user.cc b/src/xenia/kernel/xam/xam_user.cc index 3a147cb77..762ceb227 100644 --- a/src/xenia/kernel/xam/xam_user.cc +++ b/src/xenia/kernel/xam/xam_user.cc @@ -139,25 +139,22 @@ X_HRESULT_result_t XamUserGetSigninInfo_entry( } DECLARE_XAM_EXPORT1(XamUserGetSigninInfo, kUserProfiles, kImplemented); -dword_result_t XamUserGetName_entry(dword_t user_index, dword_t buffer, +dword_result_t XamUserGetName_entry(dword_t user_index, lpstring_t buffer, dword_t buffer_len) { if (user_index >= XUserMaxUserCount) { return X_ERROR_INVALID_PARAMETER; } - char* str_buffer = kernel_memory()->TranslateVirtual(buffer); - - if (!kernel_state()->xam_state()->IsUserSignedIn(user_index)) { - *str_buffer = 0; + if (kernel_state()->xam_state()->IsUserSignedIn(user_index)) { + const auto& user_profile = + kernel_state()->xam_state()->GetUserProfile(user_index); + const auto& user_name = user_profile->name(); + xe::string_util::copy_truncating( + buffer, user_name, std::min(buffer_len.value(), uint32_t(16))); + } else { + *buffer = 0; return X_ERROR_NO_SUCH_USER; } - - const auto& user_profile = - kernel_state()->xam_state()->GetUserProfile(user_index); - - const auto& user_name = user_profile->name(); - xe::string_util::copy_truncating(str_buffer, user_name, - std::min(buffer_len.value(), uint32_t(16))); return X_ERROR_SUCCESS; } DECLARE_XAM_EXPORT1(XamUserGetName, kUserProfiles, kImplemented);