Rob Shearman : avifil32: Fix treating the return values of mmio* functions as HRESULTs instead of MMRESULTs .

Alexandre Julliard julliard at winehq.org
Tue Sep 30 11:16:49 CDT 2008


Module: wine
Branch: master
Commit: c9d24bdc3e498f509c40771a8a7f7bb5fe33037b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c9d24bdc3e498f509c40771a8a7f7bb5fe33037b

Author: Rob Shearman <robertshearman at gmail.com>
Date:   Tue Sep 30 13:55:35 2008 +0100

avifil32: Fix treating the return values of mmio* functions as HRESULTs instead of MMRESULTs.

(Found by PreFast.)

---

 dlls/avifil32/extrachunk.c |   26 ++++++++++++++++----------
 1 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/dlls/avifil32/extrachunk.c b/dlls/avifil32/extrachunk.c
index 45096e8..5b87623 100644
--- a/dlls/avifil32/extrachunk.c
+++ b/dlls/avifil32/extrachunk.c
@@ -145,7 +145,7 @@ HRESULT FindChunkAndKeepExtras(LPEXTRACHUNKS extra,HMMIO hmmio,MMCKINFO *lpck,
 {
   FOURCC  ckid;
   FOURCC  fccType;
-  HRESULT hr;
+  MMRESULT mmr;
 
   /* pre-conditions */
   assert(extra != NULL);
@@ -171,12 +171,13 @@ HRESULT FindChunkAndKeepExtras(LPEXTRACHUNKS extra,HMMIO hmmio,MMCKINFO *lpck,
   TRACE(": find ckid=0x%08X fccType=0x%08X\n", ckid, fccType);
 
   for (;;) {
-    hr = mmioDescend(hmmio, lpck, lpckParent, 0);
-    if (hr != S_OK) {
+    mmr = mmioDescend(hmmio, lpck, lpckParent, 0);
+    if (mmr != MMSYSERR_NOERROR) {
       /* No extra chunks in front of desired chunk? */
-      if (flags == 0 && hr == MMIOERR_CHUNKNOTFOUND)
-	hr = AVIERR_OK;
-      return hr;
+      if (flags == 0 && mmr == MMIOERR_CHUNKNOTFOUND)
+	return AVIERR_OK;
+      else
+        return AVIERR_FILEREAD;
     }
 
     /* Have we found what we search for? */
@@ -187,10 +188,15 @@ HRESULT FindChunkAndKeepExtras(LPEXTRACHUNKS extra,HMMIO hmmio,MMCKINFO *lpck,
     /* Skip padding chunks, the others put into the extrachunk-structure */
     if (lpck->ckid == ckidAVIPADDING ||
 	lpck->ckid == mmioFOURCC('p','a','d','d'))
-      hr = mmioAscend(hmmio, lpck, 0);
+    {
+      mmr = mmioAscend(hmmio, lpck, 0);
+      if (mmr != MMSYSERR_NOERROR) return AVIERR_FILEREAD;
+    }
     else
-      hr = ReadChunkIntoExtra(extra, hmmio, lpck);
-    if (FAILED(hr))
-      return hr;
+    {
+      HRESULT hr = ReadChunkIntoExtra(extra, hmmio, lpck);
+      if (FAILED(hr))
+        return hr;
+    }
   }
 }




More information about the wine-cvs mailing list