summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/kernel_helpers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/service/kernel_helpers.cpp')
-rw-r--r--src/core/hle/service/kernel_helpers.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/core/hle/service/kernel_helpers.cpp b/src/core/hle/service/kernel_helpers.cpp
index 42991928e..a39ce5212 100644
--- a/src/core/hle/service/kernel_helpers.cpp
+++ b/src/core/hle/service/kernel_helpers.cpp
@@ -15,17 +15,24 @@ namespace Service::KernelHelpers {
ServiceContext::ServiceContext(Core::System& system_, std::string name_)
: kernel(system_.Kernel()) {
+ if (process = Kernel::GetCurrentProcessPointer(kernel); process != nullptr) {
+ return;
+ }
+
// Create the process.
process = Kernel::KProcess::Create(kernel);
ASSERT(Kernel::KProcess::Initialize(process, system_, std::move(name_),
Kernel::KProcess::ProcessType::KernelInternal,
kernel.GetSystemResourceLimit())
.IsSuccess());
+ process_created = true;
}
ServiceContext::~ServiceContext() {
- process->Close();
- process = nullptr;
+ if (process_created) {
+ process->Close();
+ process = nullptr;
+ }
}
Kernel::KEvent* ServiceContext::CreateEvent(std::string&& name) {