From 8e4c9c9852b17082f9cb2e2b3d954dee6be7280f Mon Sep 17 00:00:00 2001
From: ameerj <52414509+ameerj@users.noreply.github.com>
Date: Sat, 20 Feb 2021 20:51:11 -0500
Subject: kernel: Fix resource release exception on exit

After rewriting the resource limit, objects releasing reserved resources require a live kernel instance.
This commit fixes exceptions that occur due to the kernel being destroyed before some objects released their resources, allowing for a graceful exit.
---
 src/core/hle/kernel/kernel.cpp | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

(limited to 'src/core/hle/kernel/kernel.cpp')

diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index b6e6f115eb..39c5182c59 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -101,8 +101,6 @@ struct KernelCore::Impl {
 
         current_process = nullptr;
 
-        system_resource_limit = nullptr;
-
         global_handle_table.Clear();
 
         preemption_event = nullptr;
@@ -111,6 +109,13 @@ struct KernelCore::Impl {
 
         exclusive_monitor.reset();
 
+        hid_shared_mem = nullptr;
+        font_shared_mem = nullptr;
+        irs_shared_mem = nullptr;
+        time_shared_mem = nullptr;
+
+        system_resource_limit = nullptr;
+
         // Next host thead ID to use, 0-3 IDs represent core threads, >3 represent others
         next_host_thread_id = Core::Hardware::NUM_CPU_CORES;
     }
-- 
cgit v1.2.3-70-g09d2