Yet another round of redundand NULL checks before HeapFree (Smatch; 2nd try)

Michael Stefaniuc mstefani at redhat.de
Sun Jun 11 17:11:36 CDT 2006


Hello,

this is the 2nd try with the false positive removed and a couple more
redundand NULL checks found.

bye
	michael
---

 dlls/avifil32/acmstream.c   |   12 ++++--------
 dlls/avifil32/avifile.c     |   13 +++++--------
 dlls/avifil32/getframe.c    |    8 +++-----
 dlls/avifil32/wavfile.c     |    6 ++----
 dlls/comdlg32/filedlg31.c   |    2 +-
 dlls/dbghelp/msc.c          |    2 +-
 dlls/ddraw/executebuffer.c  |    2 +-
 dlls/gdi/gdiobj.c           |    2 +-
 dlls/mciseq/mcimidi.c       |    6 ++----
 dlls/mpr/wnet.c             |    2 +-
 dlls/msvfw32/msvideo_main.c |   24 ++++++++----------------
 dlls/ntdll/path.c           |    2 +-
 dlls/user/exticon.c         |    4 ++--
 dlls/user/listbox.c         |    2 +-
 14 files changed, 33 insertions(+), 54 deletions(-)

d7d16850da903fd640acca8be01955e147b76056
diff --git a/dlls/avifil32/acmstream.c b/dlls/avifil32/acmstream.c
index 92fa4ea..19dc981 100644
--- a/dlls/avifil32/acmstream.c
+++ b/dlls/avifil32/acmstream.c
@@ -175,14 +175,10 @@ static ULONG WINAPI ACMStream_fnRelease(
       acmStreamClose(This->has, 0);
       This->has = NULL;
     }
-    if (This->acmStreamHdr.pbSrc != NULL) {
-      HeapFree(GetProcessHeap(), 0, This->acmStreamHdr.pbSrc);
-      This->acmStreamHdr.pbSrc = NULL;
-    }
-    if (This->acmStreamHdr.pbDst != NULL) {
-      HeapFree(GetProcessHeap(), 0, This->acmStreamHdr.pbDst);
-      This->acmStreamHdr.pbDst = NULL;
-    }
+    HeapFree(GetProcessHeap(), 0, This->acmStreamHdr.pbSrc);
+    This->acmStreamHdr.pbSrc = NULL;
+    HeapFree(GetProcessHeap(), 0, This->acmStreamHdr.pbDst);
+    This->acmStreamHdr.pbDst = NULL;
     if (This->lpInFormat != NULL) {
       HeapFree(GetProcessHeap(), 0, This->lpInFormat);
       This->lpInFormat = NULL;
diff --git a/dlls/avifil32/avifile.c b/dlls/avifil32/avifile.c
index 7264469..1805623 100644
--- a/dlls/avifil32/avifile.c
+++ b/dlls/avifil32/avifile.c
@@ -326,10 +326,9 @@ static ULONG WINAPI IAVIFile_fnRelease(I
       This->fileextra.cb = 0;
     }
 
-    if (This->szFileName != NULL) {
-      HeapFree(GetProcessHeap(), 0, This->szFileName);
-      This->szFileName = NULL;
-    }
+    HeapFree(GetProcessHeap(), 0, This->szFileName);
+    This->szFileName = NULL;
+
     if (This->hmmio != NULL) {
       mmioClose(This->hmmio, 0);
       This->hmmio = NULL;
@@ -1565,10 +1564,8 @@ static void    AVIFILE_DestructAVIStream
     This->idxFrames  = NULL;
     This->nIdxFrames = 0;
   }
-  if (This->idxFmtChanges != NULL) {
-    HeapFree(GetProcessHeap(), 0, This->idxFmtChanges);
-    This->idxFmtChanges = NULL;
-  }
+  HeapFree(GetProcessHeap(), 0, This->idxFmtChanges);
+  This->idxFmtChanges = NULL;
   if (This->lpBuffer != NULL) {
     HeapFree(GetProcessHeap(), 0, This->lpBuffer);
     This->lpBuffer = NULL;
diff --git a/dlls/avifil32/getframe.c b/dlls/avifil32/getframe.c
index 113f80c..172a0b0 100644
--- a/dlls/avifil32/getframe.c
+++ b/dlls/avifil32/getframe.c
@@ -97,14 +97,12 @@ typedef struct _IGetFrameImpl {
 
 static void AVIFILE_CloseCompressor(IGetFrameImpl *This)
 {
-  if (This->lpOutFormat != NULL && This->lpInFormat != This->lpOutFormat) {
+  if (This->lpInFormat != This->lpOutFormat) {
     HeapFree(GetProcessHeap(), 0, This->lpOutFormat);
     This->lpOutFormat = NULL;
   }
-  if (This->lpInFormat != NULL) {
-    HeapFree(GetProcessHeap(), 0, This->lpInFormat);
-    This->lpInFormat = NULL;
-  }
+  HeapFree(GetProcessHeap(), 0, This->lpInFormat);
+  This->lpInFormat = NULL;
   if (This->hic != NULL) {
     if (This->bResize)
       ICDecompressExEnd(This->hic);
diff --git a/dlls/avifil32/wavfile.c b/dlls/avifil32/wavfile.c
index 376e104..8a0f6ab 100644
--- a/dlls/avifil32/wavfile.c
+++ b/dlls/avifil32/wavfile.c
@@ -297,10 +297,8 @@ static ULONG WINAPI IAVIFile_fnRelease(I
       This->extra.lp = NULL;
       This->extra.cb = 0;
     }
-    if (This->szFileName != NULL) {
-      HeapFree(GetProcessHeap(), 0, This->szFileName);
-      This->szFileName = NULL;
-    }
+    HeapFree(GetProcessHeap(), 0, This->szFileName);
+    This->szFileName = NULL;
     if (This->hmmio != NULL) {
       mmioClose(This->hmmio, 0);
       This->hmmio = NULL;
diff --git a/dlls/comdlg32/filedlg31.c b/dlls/comdlg32/filedlg31.c
index a283068..79141fa 100644
--- a/dlls/comdlg32/filedlg31.c
+++ b/dlls/comdlg32/filedlg31.c
@@ -764,7 +764,7 @@ void FD31_FreeOfnW(LPOPENFILENAMEW ofnW)
    HeapFree(GetProcessHeap(), 0, ofnW->lpstrFileTitle);
    HeapFree(GetProcessHeap(), 0, (LPWSTR) ofnW->lpstrInitialDir);
    HeapFree(GetProcessHeap(), 0, (LPWSTR) ofnW->lpstrTitle);
-   if ((ofnW->lpTemplateName) && (HIWORD(ofnW->lpTemplateName)))
+   if (HIWORD(ofnW->lpTemplateName))
        HeapFree(GetProcessHeap(), 0, (LPWSTR) ofnW->lpTemplateName);
 }
 
diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c
index 4f044fb..fb6b413 100644
--- a/dlls/dbghelp/msc.c
+++ b/dlls/dbghelp/msc.c
@@ -370,7 +370,7 @@ static void codeview_clear_type_table(vo
 
     for (i = 0; i < CV_MAX_MODULES; i++)
     {
-        if (cv_zmodules[i].allowed && cv_zmodules[i].defined_types)
+        if (cv_zmodules[i].allowed)
             HeapFree(GetProcessHeap(), 0, cv_zmodules[i].defined_types);
         cv_zmodules[i].allowed = FALSE;
         cv_zmodules[i].defined_types = NULL;
diff --git a/dlls/ddraw/executebuffer.c b/dlls/ddraw/executebuffer.c
index bcd0f45..274c2a0 100644
--- a/dlls/ddraw/executebuffer.c
+++ b/dlls/ddraw/executebuffer.c
@@ -536,7 +536,7 @@ Main_IDirect3DExecuteBufferImpl_1_Releas
     TRACE("(%p/%p)->()decrementing from %lu.\n", This, iface, ref + 1);
 
     if (!ref) {
-        if ((This->desc.lpData != NULL) && This->need_free)
+        if (This->need_free)
 	    HeapFree(GetProcessHeap(),0,This->desc.lpData);
         HeapFree(GetProcessHeap(),0,This->vertex_data);
         HeapFree(GetProcessHeap(),0,This->indices);
diff --git a/dlls/gdi/gdiobj.c b/dlls/gdi/gdiobj.c
index a4dfe79..24c20fc 100644
--- a/dlls/gdi/gdiobj.c
+++ b/dlls/gdi/gdiobj.c
@@ -732,7 +732,7 @@ BOOL GDI_FreeObject( HGDIOBJ handle, voi
     object->wMagic = 0;  /* Mark it as invalid */
     object->funcs  = NULL;
     i = ((ULONG_PTR)handle >> 2) - FIRST_LARGE_HANDLE;
-    if (i >= 0 && i < MAX_LARGE_HANDLES && large_handles[i])
+    if (i >= 0 && i < MAX_LARGE_HANDLES)
     {
         HeapFree( GetProcessHeap(), 0, large_handles[i] );
         large_handles[i] = NULL;
diff --git a/dlls/mciseq/mcimidi.c b/dlls/mciseq/mcimidi.c
index 39131cc..fcf30e8 100644
--- a/dlls/mciseq/mcimidi.c
+++ b/dlls/mciseq/mcimidi.c
@@ -1231,10 +1231,8 @@ static DWORD MIDI_mciRecord(UINT wDevID,
     TRACE("Before MIDM_UNPREPARE\n");
     dwRet = midiInUnprepareHeader((HMIDIIN)wmm->hMidi, &midiHdr, sizeof(MIDIHDR));
     TRACE("After MIDM_UNPREPARE\n");
-    if (midiHdr.lpData != NULL) {
-	HeapFree(GetProcessHeap(), 0, midiHdr.lpData);
-	midiHdr.lpData = NULL;
-    }
+    HeapFree(GetProcessHeap(), 0, midiHdr.lpData);
+    midiHdr.lpData = NULL;
     wmm->dwStatus = MCI_MODE_STOP;
     if (lpParms && (dwFlags & MCI_NOTIFY)) {
 	TRACE("MCI_NOTIFY_SUCCESSFUL %08lX !\n", lpParms->dwCallback);
diff --git a/dlls/mpr/wnet.c b/dlls/mpr/wnet.c
index 60a2a29..804b457 100644
--- a/dlls/mpr/wnet.c
+++ b/dlls/mpr/wnet.c
@@ -653,7 +653,7 @@ DWORD WINAPI WNetOpenEnumA( DWORD dwScop
             if (ret == WN_SUCCESS)
                 ret = WNetOpenEnumW(dwScope, dwType, dwUsage, lpNetWide,
                  lphEnum);
-            if (allocated && lpNetWide)
+            if (allocated)
                 HeapFree(GetProcessHeap(), 0, lpNetWide);
         }
         else
diff --git a/dlls/msvfw32/msvideo_main.c b/dlls/msvfw32/msvideo_main.c
index 4044ec5..5aa050a 100644
--- a/dlls/msvfw32/msvideo_main.c
+++ b/dlls/msvfw32/msvideo_main.c
@@ -1004,22 +1004,14 @@ void VFWAPI ICCompressorFree(PCOMPVARS p
       ICClose(pc->hic);
       pc->hic = NULL;
     }
-    if (pc->lpbiIn != NULL) {
-      HeapFree(GetProcessHeap(), 0, pc->lpbiIn);
-      pc->lpbiIn = NULL;
-    }
-    if (pc->lpBitsOut != NULL) {
-      HeapFree(GetProcessHeap(), 0, pc->lpBitsOut);
-      pc->lpBitsOut = NULL;
-    }
-    if (pc->lpBitsPrev != NULL) {
-      HeapFree(GetProcessHeap(), 0, pc->lpBitsPrev);
-      pc->lpBitsPrev = NULL;
-    }
-    if (pc->lpState != NULL) {
-      HeapFree(GetProcessHeap(), 0, pc->lpState);
-      pc->lpState = NULL;
-    }
+    HeapFree(GetProcessHeap(), 0, pc->lpbiIn);
+    pc->lpbiIn = NULL;
+    HeapFree(GetProcessHeap(), 0, pc->lpBitsOut);
+    pc->lpBitsOut = NULL;
+    HeapFree(GetProcessHeap(), 0, pc->lpBitsPrev);
+    pc->lpBitsPrev = NULL;
+    HeapFree(GetProcessHeap(), 0, pc->lpState);
+    pc->lpState = NULL;
     pc->dwFlags = 0;
   }
 }
diff --git a/dlls/ntdll/path.c b/dlls/ntdll/path.c
index cfe7fdb..e9286a0 100644
--- a/dlls/ntdll/path.c
+++ b/dlls/ntdll/path.c
@@ -802,7 +802,7 @@ static ULONG get_full_path_helper(LPCWST
     if (reqsize) memcpy(buffer, ins_str, reqsize);
     reqsize += deplen;
 
-    if (ins_str && ins_str != tmp && ins_str != cd->Buffer)
+    if (ins_str != tmp && ins_str != cd->Buffer)
         RtlFreeHeap(GetProcessHeap(), 0, ins_str);
 
     collapse_path( buffer, mark );
diff --git a/dlls/user/exticon.c b/dlls/user/exticon.c
index ddc1ccd..485aef0 100644
--- a/dlls/user/exticon.c
+++ b/dlls/user/exticon.c
@@ -455,7 +455,7 @@ static UINT ICO_ExtractIconExW(
 	    if (nIcons == 0)
 	    {
 	      ret = iconDirCount;
-	      if (lpiID && pCIDir)	/* *.ico file, deallocate heap pointer*/
+              if (lpiID)	/* *.ico file, deallocate heap pointer*/
 	        HeapFree(GetProcessHeap(), 0, pCIDir);
 	    }
 	    else if (nIconIndex < iconDirCount)
@@ -472,7 +472,7 @@ static UINT ICO_ExtractIconExW(
 	        pIconId[i] = LookupIconIdFromDirectoryEx(pCIDir, TRUE, cx1, cy1, flags);
                 if (cx2 && cy2) pIconId[++i] = LookupIconIdFromDirectoryEx(pCIDir, TRUE,  cx2, cy2, flags);
 	      }
-	      if (lpiID && pCIDir)	/* *.ico file, deallocate heap pointer*/
+              if (lpiID)	/* *.ico file, deallocate heap pointer*/
 	        HeapFree(GetProcessHeap(), 0, pCIDir);
 
 	      for (icon = 0; icon < nIcons; icon++)
diff --git a/dlls/user/listbox.c b/dlls/user/listbox.c
index 0b21a39..08c1eb7 100644
--- a/dlls/user/listbox.c
+++ b/dlls/user/listbox.c
@@ -1652,7 +1652,7 @@ static void LISTBOX_DeleteItem( LB_DESCR
         dis.itemData = descr->items[index].data;
         SendMessageW( descr->owner, WM_DELETEITEM, id, (LPARAM)&dis );
     }
-    if (HAS_STRINGS(descr) && descr->items[index].str)
+    if (HAS_STRINGS(descr))
         HeapFree( GetProcessHeap(), 0, descr->items[index].str );
 }
 
-- 
1.3.3


-- 
Michael Stefaniuc               Tel.: +49-711-96437-199
Sr. Network Engineer            Fax.: +49-711-96437-111
Red Hat GmbH                    Email: mstefani at redhat.com
Hauptstaetterstr. 58            http://www.redhat.de/
D-70178 Stuttgart
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-patches/attachments/20060612/b9c87f18/attachment-0001.pgp


More information about the wine-patches mailing list