diff --git a/src/xenia/kernel/kernel_state.cc b/src/xenia/kernel/kernel_state.cc index d672cf6b4..b50d64164 100644 --- a/src/xenia/kernel/kernel_state.cc +++ b/src/xenia/kernel/kernel_state.cc @@ -196,11 +196,12 @@ void KernelState::SetExecutableModule(object_ref module) { // Setup the kernel's XexExecutableModuleHandle field. auto export = processor()->export_resolver()->GetExportByOrdinal( "xboxkrnl.exe", ordinals::XexExecutableModuleHandle); - assert_not_null(export); - assert_not_zero(export->variable_ptr); - auto variable_ptr = - memory()->TranslateVirtual*>(export->variable_ptr); - *variable_ptr = executable_module_->hmodule_ptr(); + if (export) { + assert_not_zero(export->variable_ptr); + auto variable_ptr = + memory()->TranslateVirtual*>(export->variable_ptr); + *variable_ptr = executable_module_->hmodule_ptr(); + } } void KernelState::LoadKernelModule(object_ref kernel_module) { diff --git a/src/xenia/kernel/xboxkrnl_rtl.cc b/src/xenia/kernel/xboxkrnl_rtl.cc index 0ff82a422..1a53429f3 100644 --- a/src/xenia/kernel/xboxkrnl_rtl.cc +++ b/src/xenia/kernel/xboxkrnl_rtl.cc @@ -390,17 +390,16 @@ SHIM_CALL RtlImageXexHeaderField_shim(PPCContext* ppc_context, auto header = kernel_memory()->TranslateVirtual(xex_header_base); if (!header) { - SHIM_SET_RETURN_32(X_STATUS_UNSUCCESSFUL); + SHIM_SET_RETURN_32(0); return; } - uint8_t* hdr = xex2_get_opt_header(header, image_field); - if (!hdr) { - SHIM_SET_RETURN_32(X_STATUS_NOT_FOUND); + uint8_t* field_ptr = xex2_get_opt_header(header, image_field); + if (!field_ptr) { + SHIM_SET_RETURN_32(0); return; } - - SHIM_SET_RETURN_32((uint32_t)(hdr - kernel_memory()->virtual_membase())); + SHIM_SET_RETURN_32(uint32_t(field_ptr - kernel_memory()->virtual_membase())); } // Unfortunately the Windows RTL_CRITICAL_SECTION object is bigger than the one