diff options
author | hclam@google.com <hclam@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-22 22:24:33 +0000 |
---|---|---|
committer | hclam@google.com <hclam@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-22 22:24:33 +0000 |
commit | ebb7a3f47fd0489bd15f5828d48fc678a5c159a8 (patch) | |
tree | 2752e629522ee960e48d03d78ee464beeade9939 /media | |
parent | 7d42233b59568d140afc3ded2c4bc8745892a734 (diff) | |
download | chromium_src-ebb7a3f47fd0489bd15f5828d48fc678a5c159a8.zip chromium_src-ebb7a3f47fd0489bd15f5828d48fc678a5c159a8.tar.gz chromium_src-ebb7a3f47fd0489bd15f5828d48fc678a5c159a8.tar.bz2 |
Fix memory leak in FileDataSource
FileDataSource broke the linux valgrind build because the callback
for read was not deleted.
TBR=scherkus
Review URL: http://codereview.chromium.org/159234
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21335 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/filters/file_data_source.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/media/filters/file_data_source.cc b/media/filters/file_data_source.cc index d440918..a6c381c 100644 --- a/media/filters/file_data_source.cc +++ b/media/filters/file_data_source.cc @@ -65,10 +65,11 @@ void FileDataSource::Read(int64 position, size_t size, uint8* data, ReadCallback* read_callback) { DCHECK(file_); AutoLock l(lock_); + scoped_ptr<ReadCallback> callback(read_callback); if (file_) { #if defined(OS_WIN) if (_fseeki64(file_, position, SEEK_SET)) { - read_callback->RunWithParams( + callback->RunWithParams( Tuple1<size_t>(static_cast<size_t>(DataSource::kReadError))); return; } @@ -76,20 +77,20 @@ void FileDataSource::Read(int64 position, size_t size, uint8* data, CHECK(position <= std::numeric_limits<int32>::max()); // TODO(hclam): Change fseek() to support 64-bit position. if (fseek(file_, static_cast<int32>(position), SEEK_SET)) { - read_callback->RunWithParams( + callback->RunWithParams( Tuple1<size_t>(static_cast<size_t>(DataSource::kReadError))); return; } #endif size_t size_read = fread(data, 1, size, file_); if (size_read == size || !ferror(file_)) { - read_callback->RunWithParams( + callback->RunWithParams( Tuple1<size_t>(static_cast<size_t>(size_read))); return; } } - read_callback->RunWithParams(Tuple1<size_t>(static_cast<size_t>(kReadError))); + callback->RunWithParams(Tuple1<size_t>(static_cast<size_t>(kReadError))); } bool FileDataSource::GetSize(int64* size_out) { |