Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/extern
diff options
context:
space:
mode:
authorSybren A. Stüvel <sybren@blender.org>2019-11-21 12:01:01 +0300
committerSybren A. Stüvel <sybren@blender.org>2019-11-21 12:01:12 +0300
commit122ba774e024bca0819bbaa56cdfa3c47dd49f0a (patch)
treeed732ba5ca3eeee6dadf4ae947e6ab1fda75b695 /extern
parentba1e9ae4733ae956331c7e8899f6939997205298 (diff)
Fix T71621: VSE crashes when playing last frame of audio
Due to some floating point errors the last frame of a VSE audio strip can cause integer overflow and crash Blender. This overflow was caused by a cast from `int64_t` to `int` without prior check. The crash is fixed by keeping the variable as `int64_t` for as long as possible.
Diffstat (limited to 'extern')
-rw-r--r--extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp b/extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp
index 2da84ce0d4c..2f5b5bdd199 100644
--- a/extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp
+++ b/extern/audaspace/plugins/ffmpeg/FFMPEGReader.cpp
@@ -292,8 +292,8 @@ int FFMPEGReader::read_packet(void* opaque, uint8_t* buf, int buf_size)
{
FFMPEGReader* reader = reinterpret_cast<FFMPEGReader*>(opaque);
- int size = std::min(buf_size, int(reader->m_membuffer->getSize() - reader->m_membufferpos));
-
+ int64_t remaining_buffer_size = reader->m_membuffer->getSize() - reader->m_membufferpos;
+ int64_t size = std::min(static_cast<int64_t>(buf_size), remaining_buffer_size);
if(size < 0)
return -1;