Przeglądaj źródła

am: Correct IPC object count mismatch.

bunnei 6 lat temu
rodzic
commit
3a0c1e79f8
1 zmienionych plików z 4 dodań i 6 usunięć
  1. 4 6
      src/core/hle/service/am/am.cpp

+ 4 - 6
src/core/hle/service/am/am.cpp

@@ -856,17 +856,16 @@ private:
     void PopOutData(Kernel::HLERequestContext& ctx) {
     void PopOutData(Kernel::HLERequestContext& ctx) {
         LOG_DEBUG(Service_AM, "called");
         LOG_DEBUG(Service_AM, "called");
 
 
-        IPC::ResponseBuilder rb{ctx, 2, 0, 1};
-
         const auto storage = applet->GetBroker().PopNormalDataToGame();
         const auto storage = applet->GetBroker().PopNormalDataToGame();
         if (storage == nullptr) {
         if (storage == nullptr) {
             LOG_ERROR(Service_AM,
             LOG_ERROR(Service_AM,
                       "storage is a nullptr. There is no data in the current normal channel");
                       "storage is a nullptr. There is no data in the current normal channel");
-
+            IPC::ResponseBuilder rb{ctx, 2};
             rb.Push(ERR_NO_DATA_IN_CHANNEL);
             rb.Push(ERR_NO_DATA_IN_CHANNEL);
             return;
             return;
         }
         }
 
 
+        IPC::ResponseBuilder rb{ctx, 2, 0, 1};
         rb.Push(RESULT_SUCCESS);
         rb.Push(RESULT_SUCCESS);
         rb.PushIpcInterface<IStorage>(std::move(*storage));
         rb.PushIpcInterface<IStorage>(std::move(*storage));
     }
     }
@@ -888,17 +887,16 @@ private:
     void PopInteractiveOutData(Kernel::HLERequestContext& ctx) {
     void PopInteractiveOutData(Kernel::HLERequestContext& ctx) {
         LOG_DEBUG(Service_AM, "called");
         LOG_DEBUG(Service_AM, "called");
 
 
-        IPC::ResponseBuilder rb{ctx, 2, 0, 1};
-
         const auto storage = applet->GetBroker().PopInteractiveDataToGame();
         const auto storage = applet->GetBroker().PopInteractiveDataToGame();
         if (storage == nullptr) {
         if (storage == nullptr) {
             LOG_ERROR(Service_AM,
             LOG_ERROR(Service_AM,
                       "storage is a nullptr. There is no data in the current interactive channel");
                       "storage is a nullptr. There is no data in the current interactive channel");
-
+            IPC::ResponseBuilder rb{ctx, 2};
             rb.Push(ERR_NO_DATA_IN_CHANNEL);
             rb.Push(ERR_NO_DATA_IN_CHANNEL);
             return;
             return;
         }
         }
 
 
+        IPC::ResponseBuilder rb{ctx, 2, 0, 1};
         rb.Push(RESULT_SUCCESS);
         rb.Push(RESULT_SUCCESS);
         rb.PushIpcInterface<IStorage>(std::move(*storage));
         rb.PushIpcInterface<IStorage>(std::move(*storage));
     }
     }