From c9073e101f38afe7b1444bae97eb8b78dcb151f9 Mon Sep 17 00:00:00 2001 From: Gliniak Date: Fri, 30 Jul 2021 11:42:37 +0200 Subject: [PATCH] [XAM] Fix ContentCreate to pass copy of root_name. [XAM] Fix xeXamContentCreate to pass copy of root_name for deferred operation, as the pointer may no longer be valid when the callback is executed. --- src/xenia/kernel/xam/xam_content.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/xenia/kernel/xam/xam_content.cc b/src/xenia/kernel/xam/xam_content.cc index 690edd6ca..dea81d46b 100644 --- a/src/xenia/kernel/xam/xam_content.cc +++ b/src/xenia/kernel/xam/xam_content.cc @@ -139,9 +139,9 @@ dword_result_t xeXamContentCreate(dword_t user_index, lpstring_t root_name, *disposition_ptr = 0; } - auto run = [content_manager, root_name, flags, content_data, disposition_ptr, - license_mask_ptr](uint32_t& extended_error, - uint32_t& length) -> X_RESULT { + auto run = [content_manager, root_name = root_name.value(), flags, + content_data, disposition_ptr, license_mask_ptr]( + uint32_t& extended_error, uint32_t& length) -> X_RESULT { X_RESULT result = X_ERROR_INVALID_PARAMETER; bool create = false; bool open = false; @@ -203,9 +203,9 @@ dword_result_t xeXamContentCreate(dword_t user_index, lpstring_t root_name, } if (create) { - result = content_manager->CreateContent(root_name.value(), content_data); + result = content_manager->CreateContent(root_name, content_data); } else if (open) { - result = content_manager->OpenContent(root_name.value(), content_data); + result = content_manager->OpenContent(root_name, content_data); } if (license_mask_ptr && XSUCCEEDED(result)) {