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

audio_core: stream: Ensure buffer is valid before release.

bunnei 5 éve
szülő
commit
c7a06908ae
1 módosított fájl, 10 hozzáadás és 2 törlés
  1. 10 2
      src/audio_core/stream.cpp

+ 10 - 2
src/audio_core/stream.cpp

@@ -130,7 +130,11 @@ bool Stream::ContainsBuffer([[maybe_unused]] Buffer::Tag tag) const {
 std::vector<Buffer::Tag> Stream::GetTagsAndReleaseBuffers(std::size_t max_count) {
 std::vector<Buffer::Tag> Stream::GetTagsAndReleaseBuffers(std::size_t max_count) {
     std::vector<Buffer::Tag> tags;
     std::vector<Buffer::Tag> tags;
     for (std::size_t count = 0; count < max_count && !released_buffers.empty(); ++count) {
     for (std::size_t count = 0; count < max_count && !released_buffers.empty(); ++count) {
-        tags.push_back(released_buffers.front()->GetTag());
+        if (released_buffers.front()) {
+            tags.push_back(released_buffers.front()->GetTag());
+        } else {
+            ASSERT_MSG(false, "Invalid tag in released_buffers!");
+        }
         released_buffers.pop();
         released_buffers.pop();
     }
     }
     return tags;
     return tags;
@@ -140,7 +144,11 @@ std::vector<Buffer::Tag> Stream::GetTagsAndReleaseBuffers() {
     std::vector<Buffer::Tag> tags;
     std::vector<Buffer::Tag> tags;
     tags.reserve(released_buffers.size());
     tags.reserve(released_buffers.size());
     while (!released_buffers.empty()) {
     while (!released_buffers.empty()) {
-        tags.push_back(released_buffers.front()->GetTag());
+        if (released_buffers.front()) {
+            tags.push_back(released_buffers.front()->GetTag());
+        } else {
+            ASSERT_MSG(false, "Invalid tag in released_buffers!");
+        }
         released_buffers.pop();
         released_buffers.pop();
     }
     }
     return tags;
     return tags;