From 33d15e8c095b09d206ebaaa6fd981122957ce694 Mon Sep 17 00:00:00 2001 From: harukalover Date: Sun, 14 Jun 2009 04:29:20 +0000 Subject: [PATCH] Fixed a memory leak that would occur when loading audio while using the hard disk cache Originally committed to SVN as r3056. --- aegisub/src/audio_provider_hd.cpp | 8 +++++--- aegisub/src/audio_provider_hd.h | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/aegisub/src/audio_provider_hd.cpp b/aegisub/src/audio_provider_hd.cpp index dc5925ce8..06e8a3183 100644 --- a/aegisub/src/audio_provider_hd.cpp +++ b/aegisub/src/audio_provider_hd.cpp @@ -82,11 +82,11 @@ HDAudioProvider::HDAudioProvider(AudioProvider *source) { // Write to disk int block = 4096; - char *temp = new char[block * channels * bytes_per_sample]; + data = new char[block * channels * bytes_per_sample]; for (int64_t i=0;i num_samples) block = num_samples - i; - source->GetAudio(temp,i,block); - file_cache.Write(temp,block * channels * bytes_per_sample); + source->GetAudio(data,i,block); + file_cache.Write(data,block * channels * bytes_per_sample); progress->SetProgress(i,num_samples); } file_cache.Seek(0); @@ -97,6 +97,7 @@ HDAudioProvider::HDAudioProvider(AudioProvider *source) { } else { file_cache.Close(); + delete[] data; throw wxString(_T("Audio loading cancelled by user")); } } @@ -107,6 +108,7 @@ HDAudioProvider::HDAudioProvider(AudioProvider *source) { HDAudioProvider::~HDAudioProvider() { file_cache.Close(); wxRemoveFile(diskCacheFilename); + delete[] data; } diff --git a/aegisub/src/audio_provider_hd.h b/aegisub/src/audio_provider_hd.h index db34afb10..38e957a21 100644 --- a/aegisub/src/audio_provider_hd.h +++ b/aegisub/src/audio_provider_hd.h @@ -51,6 +51,7 @@ private: wxFile file_cache; wxString diskCacheFilename; bool samples_native_endian; + char *data; static wxString DiskCachePath(); static wxString DiskCacheName();