From 19b5544a2ae964c260cf0f135522c33c8242c487 Mon Sep 17 00:00:00 2001 From: Niels Martin Hansen Date: Fri, 17 Apr 2009 16:34:06 +0000 Subject: [PATCH] Fix crash in PCM audio provider when using files larger than the mapping size (256 MB on 32 bit). The length of mappings closer than mapping-size to the end of the file, when the file was larger, would not be adjusted to not cross the end of file. Originally committed to SVN as r2810. --- aegisub/src/audio_provider_pcm.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aegisub/src/audio_provider_pcm.cpp b/aegisub/src/audio_provider_pcm.cpp index 0b87e0565..2d33eb27d 100644 --- a/aegisub/src/audio_provider_pcm.cpp +++ b/aegisub/src/audio_provider_pcm.cpp @@ -178,7 +178,7 @@ char * PCMAudioProvider::EnsureRangeAccessible(int64_t range_start, int64_t rang mapping_length = range_length; } // But also make sure we don't try to make a mapping larger than the file - if ((int64_t)mapping_length > file_size) + if (mapping_start + (int64_t)mapping_length > file_size) mapping_length = (size_t)(file_size - mapping_start); // We already checked that the requested range doesn't extend over the end of the file // Hopefully this should ensure that small files are always mapped in their entirety