avifil32: Don't leak the buffer on HeapReAlloc() failure in AVISaveOptionsFmtChoose().

This commit is contained in:
Henri Verbeet 2010-01-05 21:29:03 +01:00 committed by Alexandre Julliard
parent 7ab7103946
commit d34aba2a1c
1 changed files with 4 additions and 3 deletions

View File

@ -1225,13 +1225,14 @@ static BOOL AVISaveOptionsFmtChoose(HWND hWnd)
acmMetrics(NULL, ACM_METRIC_MAX_SIZE_FORMAT, &size); acmMetrics(NULL, ACM_METRIC_MAX_SIZE_FORMAT, &size);
if ((pOptions->cbFormat == 0 || pOptions->lpFormat == NULL) && size != 0) { if ((pOptions->cbFormat == 0 || pOptions->lpFormat == NULL) && size != 0) {
pOptions->lpFormat = HeapAlloc(GetProcessHeap(), 0, size); pOptions->lpFormat = HeapAlloc(GetProcessHeap(), 0, size);
if (!pOptions->lpFormat) return FALSE;
pOptions->cbFormat = size; pOptions->cbFormat = size;
} else if (pOptions->cbFormat < (DWORD)size) { } else if (pOptions->cbFormat < (DWORD)size) {
pOptions->lpFormat = HeapReAlloc(GetProcessHeap(), 0, pOptions->lpFormat, size); void *new_buffer = HeapReAlloc(GetProcessHeap(), 0, pOptions->lpFormat, size);
if (!new_buffer) return FALSE;
pOptions->lpFormat = new_buffer;
pOptions->cbFormat = size; pOptions->cbFormat = size;
} }
if (pOptions->lpFormat == NULL)
return FALSE;
afmtc.pwfx = pOptions->lpFormat; afmtc.pwfx = pOptions->lpFormat;
afmtc.cbwfx = pOptions->cbFormat; afmtc.cbwfx = pOptions->cbFormat;