Browse Source

Merge pull request #12610 from liamwhite/reply-and-dont-receive

server_manager: respond to session close correctly
Charles Lombardo 2 năm trước cách đây
mục cha
commit
db3a6075f5

+ 7 - 2
src/core/hle/service/server_manager.cpp

@@ -256,8 +256,13 @@ Result ServerManager::WaitAndProcessImpl() {
 
 
         // Wait for a signal.
         // Wait for a signal.
         s32 out_index{-1};
         s32 out_index{-1};
-        R_TRY(Kernel::KSynchronizationObject::Wait(m_system.Kernel(), &out_index, wait_objs.data(),
-                                                   num_objs, -1));
+        R_TRY_CATCH(Kernel::KSynchronizationObject::Wait(m_system.Kernel(), &out_index,
+                                                         wait_objs.data(), num_objs, -1)) {
+            R_CATCH(Kernel::ResultSessionClosed) {
+                // On session closed, index is updated and we don't want to return an error.
+            }
+        }
+        R_END_TRY_CATCH;
         ASSERT(out_index >= 0 && out_index < num_objs);
         ASSERT(out_index >= 0 && out_index < num_objs);
 
 
         // Set the output index.
         // Set the output index.