diff --git a/src/xenia/kernel/kernel_state.cc b/src/xenia/kernel/kernel_state.cc index 68f8d00af..420fe12d6 100644 --- a/src/xenia/kernel/kernel_state.cc +++ b/src/xenia/kernel/kernel_state.cc @@ -303,13 +303,18 @@ object_ref KernelState::LoadUserModule(const char* raw_name, } } + global_lock.unlock(); + // Module wasn't loaded, so load it. module = object_ref(new UserModule(this, path.c_str())); X_STATUS status = module->LoadFromFile(path); if (XFAILED(status)) { + object_table()->RemoveHandle(module->handle()); return nullptr; } + global_lock.lock(); + // Retain when putting into the listing. module->Retain(); user_modules_.push_back(module);