Forráskód Böngészése

Merge pull request #1830 from Subv/vi_ub

Services/VI: Dereferencing an uninitialized std::optional is undefined behavior.
bunnei 7 éve
szülő
commit
97e73591e3
1 módosított fájl, 2 hozzáadás és 0 törlés
  1. 2 0
      src/core/hle/service/vi/vi.cpp

+ 2 - 0
src/core/hle/service/vi/vi.cpp

@@ -542,6 +542,8 @@ private:
                         // Repeat TransactParcel DequeueBuffer when a buffer is available
                         // Repeat TransactParcel DequeueBuffer when a buffer is available
                         auto buffer_queue = nv_flinger->GetBufferQueue(id);
                         auto buffer_queue = nv_flinger->GetBufferQueue(id);
                         std::optional<u32> slot = buffer_queue->DequeueBuffer(width, height);
                         std::optional<u32> slot = buffer_queue->DequeueBuffer(width, height);
+                        ASSERT_MSG(slot != std::nullopt, "Could not dequeue buffer.");
+
                         IGBPDequeueBufferResponseParcel response{*slot};
                         IGBPDequeueBufferResponseParcel response{*slot};
                         ctx.WriteBuffer(response.Serialize());
                         ctx.WriteBuffer(response.Serialize());
                         IPC::ResponseBuilder rb{ctx, 2};
                         IPC::ResponseBuilder rb{ctx, 2};