summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorhclam@google.com <hclam@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-22 22:24:33 +0000
committerhclam@google.com <hclam@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-22 22:24:33 +0000
commitebb7a3f47fd0489bd15f5828d48fc678a5c159a8 (patch)
tree2752e629522ee960e48d03d78ee464beeade9939 /media
parent7d42233b59568d140afc3ded2c4bc8745892a734 (diff)
downloadchromium_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.cc9
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) {