diff --git a/dlls/itss/chm_lib.c b/dlls/itss/chm_lib.c
index 190dea7..8e3a75e 100644
--- a/dlls/itss/chm_lib.c
+++ b/dlls/itss/chm_lib.c
@@ -805,8 +805,7 @@
             h->cache_blocks = NULL;
         }
 
-        if (h->cache_block_indices)
-            free(h->cache_block_indices);
+        free(h->cache_block_indices);
         h->cache_block_indices = NULL;
 
         free(h);
diff --git a/dlls/itss/lzx.c b/dlls/itss/lzx.c
index 927199a..cfafea0 100644
--- a/dlls/itss/lzx.c
+++ b/dlls/itss/lzx.c
@@ -208,8 +208,7 @@
 {
     if (pState)
     {
-        if (pState->window)
-            free(pState->window);
+        free(pState->window);
         free(pState);
     }
 }
diff --git a/dlls/msvcrt/tests/file.c b/dlls/msvcrt/tests/file.c
index fad6ff5..3a89b3d 100644
--- a/dlls/msvcrt/tests/file.c
+++ b/dlls/msvcrt/tests/file.c
@@ -384,8 +384,8 @@
     }
   ok(!(diff_found), "fgetwc difference found in BINARY mode\n");
   ok(*wptr == '\n', "Should get newline\n");
-  
-  if(mytextW) free (mytextW);
+
+  free(mytextW);
   fclose(tempfh);
   unlink(tempf);
 }
@@ -481,7 +481,7 @@
       diff_found |= (*aptr != *wptr);
     }
   ok(!(diff_found), "fgetwc doesn't strip CR in TEXT mode\n");
-  if(mytextW) free (mytextW);
+  free(mytextW);
   fclose(tempfh);
   unlink(tempf);
 }
diff --git a/dlls/oleaut32/ungif.c b/dlls/oleaut32/ungif.c
index 7ee6e83..c630522 100644
--- a/dlls/oleaut32/ungif.c
+++ b/dlls/oleaut32/ungif.c
@@ -231,8 +231,7 @@
             sp->ImageDesc.ColorMap = NULL;
         }
 
-        if (sp->RasterBits)
-            free(sp->RasterBits);
+        free(sp->RasterBits);
 
         if (sp->ExtensionBlocks)
             FreeExtension(sp);
@@ -962,10 +961,8 @@
         GifFile->SColorMap = NULL;
     }
 
-    if (Private) {
-        free(Private);
-        Private = NULL;
-    }
+    free(Private);
+    Private = NULL;
 
     if (GifFile->SavedImages) {
         FreeSavedImages(GifFile);
diff --git a/dlls/winmm/winenas/audio.c b/dlls/winmm/winenas/audio.c
index 4b8eb1b..73b6b88 100644
--- a/dlls/winmm/winenas/audio.c
+++ b/dlls/winmm/winenas/audio.c
@@ -1379,8 +1379,7 @@
         void *oldbuf = wwo->SoundBuffer;
         memcpy(newbuf, oldbuf, wwo->BufferUsed);
         wwo->SoundBuffer = newbuf;
-        if (oldbuf != NULL)
-           free(oldbuf);
+        free(oldbuf);
 }
 
 static int nas_add_buffer(WINE_WAVEOUT* wwo) {
diff --git a/libs/wpp/ppl.l b/libs/wpp/ppl.l
index 6b251a8..58fda7b 100644
--- a/libs/wpp/ppl.l
+++ b/libs/wpp/ppl.l
@@ -1249,11 +1249,10 @@
 					if(pp_status.debug)
 						fprintf(stderr, "pop_buffer: %s:%d: includelogic added, include_ppp='%s', file='%s'\n", pp_status.input, pp_status.line_number, pp_incl_state.ppp, iep->filename);
 				}
-				else if(bufferstack[bufferstackidx].include_filename)
+				else
 					free(bufferstack[bufferstackidx].include_filename);
 			}
-			if(pp_incl_state.ppp)
-				free(pp_incl_state.ppp);
+			free(pp_incl_state.ppp);
 			pp_incl_state	= bufferstack[bufferstackidx].incl;
 			pass_data	= bufferstack[bufferstackidx].pass_data;
 
@@ -1320,12 +1319,9 @@
 
 	for(i = 0; i < mep->nargs; i++)
 		free(mep->args[i]);
-	if(mep->args)
-		free(mep->args);
-	if(mep->nnls)
-		free(mep->nnls);
-	if(mep->curarg)
-		free(mep->curarg);
+	free(mep->args);
+	free(mep->nnls);
+	free(mep->curarg);
 	free(mep);
 }
 
diff --git a/libs/wpp/wpp.c b/libs/wpp/wpp.c
index 59429c7..7b87c36 100644
--- a/libs/wpp/wpp.c
+++ b/libs/wpp/wpp.c
@@ -80,7 +80,7 @@
     {
         if (!strcmp( def->name, name ))
         {
-            if (def->value) free( def->value );
+            free( def->value );
             def->value = pp_xstrdup(value);
             return;
         }
@@ -103,7 +103,7 @@
     {
         if (!strcmp( def->name, name ))
         {
-            if (def->value) free( def->value );
+            free( def->value );
             def->value = NULL;
             return;
         }
diff --git a/programs/taskmgr/perfdata.c b/programs/taskmgr/perfdata.c
index 2b4a101..6a88fa3 100644
--- a/programs/taskmgr/perfdata.c
+++ b/programs/taskmgr/perfdata.c
@@ -178,9 +178,7 @@
     /*
      * Save system processor time info
      */
-    if (SystemProcessorTimeInfo) {
-        free(SystemProcessorTimeInfo);
-    }
+    free(SystemProcessorTimeInfo);
     SystemProcessorTimeInfo = SysProcessorTimeInfo;
     
     /*
@@ -231,9 +229,7 @@
     }
 
     /* Now alloc a new PERFDATA array and fill in the data */
-    if (pPerfDataOld) {
-        free(pPerfDataOld);
-    }
+    free(pPerfDataOld);
     pPerfDataOld = pPerfData;
     pPerfData = (PPERFDATA)malloc(sizeof(PERFDATA) * ProcessCount);
     pSPI = (PSYSTEM_PROCESS_INFORMATION)pBuffer;
