From a3c4f9da509e02874b46afaadf8140bc20b9e4f6 Mon Sep 17 00:00:00 2001 From: "dalecurtis@chromium.org" Date: Sat, 23 Feb 2013 00:54:59 +0000 Subject: Fix buffer leak in Wave In/Out implementation. |waveout_| and |wavein_| are NULL when we call FreeBuffers() in their respective implementations, which means the unprepareheader calls never succeed. BUG=145725 TEST=none Review URL: https://chromiumcodereview.appspot.com/12330063 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@184238 0039d316-1c4b-4281-b951-d872f2087c98 --- media/audio/win/wavein_input_win.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'media/audio/win/wavein_input_win.cc') diff --git a/media/audio/win/wavein_input_win.cc b/media/audio/win/wavein_input_win.cc index aa0b659..924768c 100644 --- a/media/audio/win/wavein_input_win.cc +++ b/media/audio/win/wavein_input_win.cc @@ -183,7 +183,9 @@ void PCMWaveInAudioInputStream::Close() { Stop(); if (wavein_) { - // waveInClose() generates a WIM_CLOSE callback. In case start was never + FreeBuffers(); + + // waveInClose() generates a WIM_CLOSE callback. In case Start() was never // called, force a reset to ensure close succeeds. MMRESULT res = ::waveInReset(wavein_); DCHECK_EQ(res, static_cast(MMSYSERR_NOERROR)); @@ -191,7 +193,6 @@ void PCMWaveInAudioInputStream::Close() { DCHECK_EQ(res, static_cast(MMSYSERR_NOERROR)); state_ = kStateClosed; wavein_ = NULL; - FreeBuffers(); } // Tell the audio manager that we have been released. This can result in -- cgit v1.1