diff options
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) { |