diff options
| author | 2020-12-26 16:05:56 -0800 | |
|---|---|---|
| committer | 2020-12-28 21:33:34 -0800 | |
| commit | c7a06908ae1a1c0893876800944e494a0fa03918 (patch) | |
| tree | f340d30504a510f60db6c8ca5b4063c2775e4685 /src/audio_core/stream.cpp | |
| parent | core: Do not reset device_memory on shutdown. (diff) | |
| download | yuzu-c7a06908ae1a1c0893876800944e494a0fa03918.tar.gz yuzu-c7a06908ae1a1c0893876800944e494a0fa03918.tar.xz yuzu-c7a06908ae1a1c0893876800944e494a0fa03918.zip | |
audio_core: stream: Ensure buffer is valid before release.
Diffstat (limited to 'src/audio_core/stream.cpp')
| -rw-r--r-- | src/audio_core/stream.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/audio_core/stream.cpp b/src/audio_core/stream.cpp index eca296589..afe68c9ed 100644 --- a/src/audio_core/stream.cpp +++ b/src/audio_core/stream.cpp | |||
| @@ -130,7 +130,11 @@ bool Stream::ContainsBuffer([[maybe_unused]] Buffer::Tag tag) const { | |||
| 130 | std::vector<Buffer::Tag> Stream::GetTagsAndReleaseBuffers(std::size_t max_count) { | 130 | std::vector<Buffer::Tag> Stream::GetTagsAndReleaseBuffers(std::size_t max_count) { |
| 131 | std::vector<Buffer::Tag> tags; | 131 | std::vector<Buffer::Tag> tags; |
| 132 | for (std::size_t count = 0; count < max_count && !released_buffers.empty(); ++count) { | 132 | for (std::size_t count = 0; count < max_count && !released_buffers.empty(); ++count) { |
| 133 | tags.push_back(released_buffers.front()->GetTag()); | 133 | if (released_buffers.front()) { |
| 134 | tags.push_back(released_buffers.front()->GetTag()); | ||
| 135 | } else { | ||
| 136 | ASSERT_MSG(false, "Invalid tag in released_buffers!"); | ||
| 137 | } | ||
| 134 | released_buffers.pop(); | 138 | released_buffers.pop(); |
| 135 | } | 139 | } |
| 136 | return tags; | 140 | return tags; |
| @@ -140,7 +144,11 @@ std::vector<Buffer::Tag> Stream::GetTagsAndReleaseBuffers() { | |||
| 140 | std::vector<Buffer::Tag> tags; | 144 | std::vector<Buffer::Tag> tags; |
| 141 | tags.reserve(released_buffers.size()); | 145 | tags.reserve(released_buffers.size()); |
| 142 | while (!released_buffers.empty()) { | 146 | while (!released_buffers.empty()) { |
| 143 | tags.push_back(released_buffers.front()->GetTag()); | 147 | if (released_buffers.front()) { |
| 148 | tags.push_back(released_buffers.front()->GetTag()); | ||
| 149 | } else { | ||
| 150 | ASSERT_MSG(false, "Invalid tag in released_buffers!"); | ||
| 151 | } | ||
| 144 | released_buffers.pop(); | 152 | released_buffers.pop(); |
| 145 | } | 153 | } |
| 146 | return tags; | 154 | return tags; |