[PATCH 3/5] avifil32: Only modify the stream info after a succesful allocation in AVIFILE_AddFrame().

Henri Verbeet hverbeet at codeweavers.com
Tue Jan 5 14:29:01 CST 2010


---
 dlls/avifil32/avifile.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/dlls/avifil32/avifile.c b/dlls/avifil32/avifile.c
index 48c3662..ea6d6b1 100644
--- a/dlls/avifil32/avifile.c
+++ b/dlls/avifil32/avifile.c
@@ -1381,10 +1381,8 @@ static HRESULT AVIFILE_AddFrame(IAVIStreamImpl *This, DWORD ckid, DWORD size, DW
       ERR(": found palette change in non-video stream!\n");
       return AVIERR_BADFORMAT;
     }
-    This->sInfo.dwFlags |= AVISTREAMINFO_FORMATCHANGES;
-    This->sInfo.dwFormatChangeCount++;
 
-    if (This->idxFmtChanges == NULL || This->nIdxFmtChanges < This->sInfo.dwFormatChangeCount) {
+    if (This->idxFmtChanges == NULL || This->nIdxFmtChanges <= This->sInfo.dwFormatChangeCount) {
       This->nIdxFmtChanges += 16;
       if (This->idxFmtChanges == NULL)
 	This->idxFmtChanges =
@@ -1397,7 +1395,8 @@ static HRESULT AVIFILE_AddFrame(IAVIStreamImpl *This, DWORD ckid, DWORD size, DW
 	return AVIERR_MEMORY;
     }
 
-    n = This->sInfo.dwFormatChangeCount;
+    This->sInfo.dwFlags |= AVISTREAMINFO_FORMATCHANGES;
+    n = ++This->sInfo.dwFormatChangeCount;
     This->idxFmtChanges[n].ckid          = This->lLastFrame;
     This->idxFmtChanges[n].dwFlags       = 0;
     This->idxFmtChanges[n].dwChunkOffset = offset;
-- 
1.6.4.4




More information about the wine-patches mailing list