[PATCH] Remove most of the if(p) free(p) all over the code

Clément Bœsch ubitux at gmail.com
Sun Nov 7 22:14:37 CET 2010


---
 TOOLS/vfw2menc.c               |    6 ++--
 gui/app.c                      |    5 ++-
 gui/interface.c                |   25 +++++++++----------
 gui/mplayer/gtk/pl.c           |    9 ++++--
 gui/mplayer/gtk/sb.c           |    4 +-
 gui/mplayer/play.c             |    4 +-
 gui/skin/font.c                |    2 +-
 gui/win32/dialogs.c            |    2 +-
 gui/win32/gui.c                |    6 ++--
 gui/win32/playlist.c           |    6 ++--
 gui/win32/skinload.c           |   51 +++++++++++++-------------------------
 input/ar.c                     |    6 +---
 input/input.c                  |   19 +++++---------
 input/lirc.c                   |    6 +---
 libaf/af.c                     |    3 +-
 libaf/af_center.c              |    2 -
 libaf/af_comp.c                |    2 -
 libaf/af_delay.c               |   14 ++++-------
 libaf/af_dummy.c               |    1 -
 libaf/af_equalizer.c           |    2 -
 libaf/af_export.c              |   19 +++++---------
 libaf/af_extrastereo.c         |    2 -
 libaf/af_gate.c                |    2 -
 libaf/af_hrtf.c                |   39 ++++++++++-------------------
 libaf/af_karaoke.c             |    3 +-
 libaf/af_ladspa.c              |   53 +++++++++++++--------------------------
 libaf/af_pan.c                 |    3 +-
 libaf/af_resample.c            |    3 +-
 libaf/af_sinesuppress.c        |    2 -
 libaf/af_sub.c                 |    2 -
 libaf/af_surround.c            |    6 +---
 libaf/af_sweep.c               |    8 +----
 libaf/af_volnorm.c             |    2 -
 libaf/af_volume.c              |    2 -
 libao2/ao_coreaudio.c          |    6 ++--
 libao2/ao_pcm.c                |    3 +-
 libao2/ao_sun.c                |    2 +-
 libao2/audio_out.c             |   12 +++------
 libmenu/menu.c                 |    6 ++--
 libmenu/menu_cmdlist.c         |   16 ++++-------
 libmenu/menu_console.c         |    2 +-
 libmenu/menu_filesel.c         |    3 +-
 libmenu/menu_param.c           |   19 +++++++-------
 libmpcodecs/ad_mpc.c           |    3 +-
 libmpcodecs/ad_speex.c         |    3 +-
 libmpcodecs/dec_teletext.c     |    9 ++----
 libmpcodecs/mp_image.c         |    2 +-
 libmpcodecs/vd_ffmpeg.c        |    3 +-
 libmpcodecs/vd_libmpeg2.c      |    2 +-
 libmpcodecs/vd_realvid.c       |    5 +--
 libmpcodecs/vd_xanim.c         |    3 +-
 libmpcodecs/ve_nuv.c           |    9 ++----
 libmpcodecs/ve_xvid4.c         |   16 ++++--------
 libmpcodecs/vf_ass.c           |    9 ++----
 libmpcodecs/vf_blackframe.c    |    2 +-
 libmpcodecs/vf_denoise3d.c     |    2 +-
 libmpcodecs/vf_eq.c            |    2 +-
 libmpcodecs/vf_fspp.c          |    8 +++---
 libmpcodecs/vf_geq.c           |    2 -
 libmpcodecs/vf_hqdn3d.c        |   16 ++++++++----
 libmpcodecs/vf_hue.c           |    4 +-
 libmpcodecs/vf_lavc.c          |    2 +-
 libmpcodecs/vf_mcdeint.c       |    4 +-
 libmpcodecs/vf_noise.c         |    4 +-
 libmpcodecs/vf_perspective.c   |    2 +-
 libmpcodecs/vf_pp7.c           |    2 +-
 libmpcodecs/vf_qp.c            |    2 +-
 libmpcodecs/vf_sab.c           |    4 +-
 libmpcodecs/vf_scale.c         |    8 ++----
 libmpcodecs/vf_screenshot.c    |    4 +-
 libmpcodecs/vf_spp.c           |    8 +++---
 libmpcodecs/vf_unsharp.c       |    4 +-
 libmpcodecs/vf_uspp.c          |    4 +-
 libmpdemux/asfheader.c         |    4 +-
 libmpdemux/demux_aac.c         |    3 +-
 libmpdemux/demux_asf.c         |    8 +----
 libmpdemux/demux_audio.c       |    2 -
 libmpdemux/demux_film.c        |    3 +-
 libmpdemux/demux_fli.c         |    7 +----
 libmpdemux/demux_mf.c          |    2 -
 libmpdemux/demux_mng.c         |    3 +-
 libmpdemux/demux_mpc.c         |    2 -
 libmpdemux/demux_mpg.c         |    2 +-
 libmpdemux/demux_nsv.c         |    2 -
 libmpdemux/demux_ogg.c         |   13 ++++------
 libmpdemux/demux_pva.c         |    7 +----
 libmpdemux/demux_real.c        |   12 +++------
 libmpdemux/demux_realaud.c     |    8 ++----
 libmpdemux/demux_roq.c         |    2 -
 libmpdemux/demux_rtp_codec.cpp |    2 +-
 libmpdemux/demux_ts.c          |   12 +++------
 libmpdemux/demux_viv.c         |   21 +++++----------
 libmpdemux/demuxer.h           |    4 +-
 libmpdemux/muxer_mpeg.c        |    9 ++----
 libvo/gl_common.c              |    3 +-
 libvo/video_out.c              |    3 +-
 libvo/vo_aa.c                  |   13 ++++-----
 libvo/vo_corevideo.m           |    2 +-
 libvo/vo_cvidix.c              |    6 +---
 libvo/vo_directx.c             |    3 +-
 libvo/vo_dxr2.c                |    6 +---
 libvo/vo_dxr3.c                |   12 ++-------
 libvo/vo_fbdev.c               |    9 ++----
 libvo/vo_fbdev2.c              |    4 +-
 libvo/vo_ggi.c                 |    3 +-
 libvo/vo_gif89a.c              |    6 ++--
 libvo/vo_gl.c                  |    4 +-
 libvo/vo_gl2.c                 |    9 ++----
 libvo/vo_jpeg.c                |   12 +++------
 libvo/vo_md5sum.c              |    6 +---
 libvo/vo_png.c                 |    6 +---
 libvo/vo_pnm.c                 |   12 +++------
 libvo/vo_winvidix.c            |    7 +----
 libvo/vo_xvidix.c              |    7 +----
 libvo/vo_yuv4mpeg.c            |    6 +---
 libvo/vo_zr.c                  |    9 ++----
 loader/afl.c                   |    3 +-
 loader/dshow/cmediasample.c    |    2 +-
 loader/dshow/inputpin.c        |    6 +---
 loader/dshow/outputpin.c       |    9 ++----
 loader/ext.c                   |    5 +--
 loader/ldt_keeper.c            |    3 +-
 loader/pe_image.c              |    6 +---
 loader/registry.c              |    6 +---
 mplayer.c                      |    3 +-
 osdep/macosx_finder_args.c     |    3 +-
 stream/freesdp/parser.c        |    6 +---
 stream/librtsp/rtsp.c          |    6 ++--
 stream/librtsp/rtsp_rtp.c      |    3 +-
 stream/librtsp/rtsp_session.c  |   10 ++++----
 stream/realrtsp/real.c         |    3 +-
 stream/realrtsp/rmff.c         |    6 ++--
 stream/realrtsp/sdpplin.c      |   24 ++++++------------
 sub/sub.c                      |    4 +-
 vidix/ivtv_vid.c               |    6 +---
 135 files changed, 346 insertions(+), 582 deletions(-)

diff --git a/TOOLS/vfw2menc.c b/TOOLS/vfw2menc.c
index bdeb960..760b695 100644
--- a/TOOLS/vfw2menc.c
+++ b/TOOLS/vfw2menc.c
@@ -295,9 +295,9 @@ int main(int argc, char *argv[])
     }
 
 cleanup:
-    if (driver) free(driver);
-    if (fourcc) free(fourcc);
-    if (filename) free(filename);
+    free(driver);
+    free(fourcc);
+    free(filename);
     if (hDriver) CloseDriver(hDriver, 0, 0);
     if ((coinit == S_OK) || coinit == S_FALSE) CoUninitialize();
     return ret;
diff --git a/gui/app.c b/gui/app.c
index a389013..8b08c31 100644
--- a/gui/app.c
+++ b/gui/app.c
@@ -108,11 +108,12 @@ void appClearItem( wItem * item )
  item->tmp=0;
  item->key=0; item->key2=0;
  item->Bitmap.Width=0; item->Bitmap.Height=0; item->Bitmap.BPP=0; item->Bitmap.ImageSize=0;
- if ( item->Bitmap.Image ) free( item->Bitmap.Image );
+ free(item->Bitmap.Image);
  item->Bitmap.Image=NULL;
 // ---
  item->fontid=0;
- if ( item->label ) free( item->label ); item->label=NULL;
+ free(item->label);
+ item->label=NULL;
  item->event=0;
 }
 
diff --git a/gui/interface.c b/gui/interface.c
index a03281e..97f9baa 100644
--- a/gui/interface.c
+++ b/gui/interface.c
@@ -104,7 +104,6 @@ char * gstrchr( char * str,int c )
 
 void gfree( void ** p )
 {
- if ( *p == NULL ) return;
  free( *p ); *p=NULL;
 }
 
@@ -363,19 +362,19 @@ void guiLoadFont( void )
  if ( vo_font )
   {
    int i;
-   if ( vo_font->name ) free( vo_font->name );
-   if ( vo_font->fpath ) free( vo_font->fpath );
+   free( vo_font->name );
+   free( vo_font->fpath );
    for ( i=0;i<16;i++ )
     if ( vo_font->pic_a[i] )
      {
-      if ( vo_font->pic_a[i]->bmp ) free( vo_font->pic_a[i]->bmp );
-      if ( vo_font->pic_a[i]->pal ) free( vo_font->pic_a[i]->pal );
+      free( vo_font->pic_a[i]->bmp );
+      free( vo_font->pic_a[i]->pal );
      }
    for ( i=0;i<16;i++ )
     if ( vo_font->pic_b[i] )
      {
-      if ( vo_font->pic_b[i]->bmp ) free( vo_font->pic_b[i]->bmp );
-      if ( vo_font->pic_b[i]->pal ) free( vo_font->pic_b[i]->pal );
+      free( vo_font->pic_b[i]->bmp );
+      free( vo_font->pic_b[i]->pal );
      }
    free( vo_font ); vo_font=NULL;
   }
@@ -968,8 +967,8 @@ void * gtkSet( int cmd,float fparam, void * vparam )
 	   plList=curr->next;
 	 plCurrent=curr->next;
 	 // Free it
-	 if ( curr->path ) free( curr->path );
-	 if ( curr->name ) free( curr->name );
+	 free( curr->path );
+	 free( curr->name );
 	 free( curr );
         }
 	mplCurr(); // Instead of using mplNext && mplPrev
@@ -982,8 +981,8 @@ void * gtkSet( int cmd,float fparam, void * vparam )
 	 if ( !plList ) return NULL;
 	 if ( !curr->next )
 	  {
-	   if ( curr->path ) free( curr->path );
-	   if ( curr->name ) free( curr->name );
+	   free( curr->path );
+	   free( curr->name );
 	   free( curr );
 	  }
 	  else
@@ -991,8 +990,8 @@ void * gtkSet( int cmd,float fparam, void * vparam )
 	    while ( curr->next )
 	     {
 	      next=curr->next;
-	      if ( curr->path ) free( curr->path );
-	      if ( curr->name ) free( curr->name );
+	      free( curr->path );
+	      free( curr->name );
 	      free( curr );
 	      curr=next;
 	     }
diff --git a/gui/mplayer/gtk/pl.c b/gui/mplayer/gtk/pl.c
index 2750e23..1635cd4 100644
--- a/gui/mplayer/gtk/pl.c
+++ b/gui/mplayer/gtk/pl.c
@@ -160,7 +160,8 @@ void ShowPlayList( void )
 	DirNode=gtk_ctree_node_get_row_data( GTK_CTREE( CTDirTree ),node );
 	current_path=DirNode->path;
         scan_dir( DirNode->path );
-        if ( CLFileSelected ) free( CLFileSelected ); CLFileSelected=calloc( 1,NrOfEntrys * sizeof( int ) );
+	free( CLFileSelected );
+	CLFileSelected=calloc( 1,NrOfEntrys * sizeof( int ) );
 	break;
        }
     } while( pos );
@@ -195,7 +196,8 @@ void HidePlayList( void )
  if ( !PlayList ) return;
  NrOfSelected=NrOfEntrys=0;
  gfree( (void **)&CLListSelected ); gfree( (void **)&CLFileSelected );
- if ( old_path ) free( old_path ); old_path=strdup( current_path );
+ free( old_path );
+ old_path=strdup( current_path );
  gtk_widget_hide( PlayList );
  gtk_widget_destroy( PlayList );
  PlayList=NULL;
@@ -406,7 +408,8 @@ static void plCTRow(GtkWidget * widget, gint row, gint column, GdkEventButton *
  current_path=DirNode->path;
  gtk_ctree_expand( GTK_CTREE( widget ),node );
  scan_dir( DirNode->path );
- if ( CLFileSelected ) free( CLFileSelected ); CLFileSelected=calloc( 1,NrOfEntrys * sizeof( int ) );
+ free( CLFileSelected );
+ CLFileSelected=calloc( 1,NrOfEntrys * sizeof( int ) );
 }
 
 GtkWidget * create_PlayList( void )
diff --git a/gui/mplayer/gtk/sb.c b/gui/mplayer/gtk/sb.c
index 8110dad..edbba81 100644
--- a/gui/mplayer/gtk/sb.c
+++ b/gui/mplayer/gtk/sb.c
@@ -102,7 +102,7 @@ static void prButton( GtkObject * object,gpointer user_data )
 	break;
    case 1: // ok
 	ChangeSkin( sbSelectedSkin );
-	if ( skinName ) free( skinName );
+	free( skinName );
 	skinName=strdup( sbSelectedSkin );
 	break;
   }
@@ -122,7 +122,7 @@ static void on_SkinList_select_row( GtkCList * clist,gint row,gint column,GdkEve
  if( !bevent ) return;
  if( bevent->type == GDK_2BUTTON_PRESS )
   {
-   if ( skinName ) free( skinName );
+   free( skinName );
    skinName=strdup( sbSelectedSkin );
    HideSkinBrowser();
   }
diff --git a/gui/mplayer/play.c b/gui/mplayer/play.c
index e7ffbf9..cec96f3 100644
--- a/gui/mplayer/play.c
+++ b/gui/mplayer/play.c
@@ -206,7 +206,7 @@ void ChangeSkin( char * name )
 
  if ( prev && appMPlayer.menuIsPresent )
   {
-   if ( mplMenuDrawBuffer ) free( mplMenuDrawBuffer );
+   free( mplMenuDrawBuffer );
    if ( ( mplMenuDrawBuffer = calloc( 1,appMPlayer.menuBase.Bitmap.ImageSize ) ) == NULL )
     { mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_NEMDB ); return; }
    wsResizeWindow( &appMPlayer.menuWindow,appMPlayer.menuBase.width,appMPlayer.menuBase.height );
@@ -236,7 +236,7 @@ void ChangeSkin( char * name )
  mplPBInit();
 
 // --- reload main window
- if ( mplDrawBuffer ) free( mplDrawBuffer );
+ free( mplDrawBuffer );
  if ( ( mplDrawBuffer = calloc( 1,appMPlayer.main.Bitmap.ImageSize ) ) == NULL )
   { mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_NEMDB ); return; }
 
diff --git a/gui/skin/font.c b/gui/skin/font.c
index 2da2148..308566e 100644
--- a/gui/skin/font.c
+++ b/gui/skin/font.c
@@ -59,7 +59,7 @@ void fntFreeFont( void )
   {
    if ( Fonts[i] )
     {
-     if ( Fonts[i]->Bitmap.Image ) free( Fonts[i]->Bitmap.Image );
+     free( Fonts[i]->Bitmap.Image );
      free( Fonts[i] );
      Fonts[i]=NULL;
     }
diff --git a/gui/win32/dialogs.c b/gui/win32/dialogs.c
index 3a4e7a6..f428b7e 100644
--- a/gui/win32/dialogs.c
+++ b/gui/win32/dialogs.c
@@ -709,7 +709,7 @@ static LRESULT CALLBACK SkinBrowserWndProc(HWND hwnd, UINT iMsg, WPARAM wParam,
                     if (len)
                     {
                         if (guiIntfStruct.Playing) guiGetEvent(guiCEvent, (void *) guiSetStop);
-                        if (skinName) free(skinName);
+                        free(skinName);
                         skinName = malloc(len + 1);
                         SendMessage(listbox, LB_GETTEXT, (WPARAM) index, (LPARAM) skinName);
                         /* fill out the full pathname to the skin */
diff --git a/gui/win32/gui.c b/gui/win32/gui.c
index 3be54bc..4eea798 100644
--- a/gui/win32/gui.c
+++ b/gui/win32/gui.c
@@ -1007,7 +1007,7 @@ static LRESULT CALLBACK EventProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM
                             if(GetFileAttributes(searchpath) != INVALID_FILE_ATTRIBUTES)
                             {
 #ifdef CONFIG_DVDREAD
-                                if (dvd_device) free(dvd_device);
+                                free(dvd_device);
                                 dvd_device = strdup(device + pos);
                                 dvd_title = dvd_chapter = dvd_angle = 1;
                                 handlemsg(hWnd, evPlayDVD);
@@ -1017,7 +1017,7 @@ static LRESULT CALLBACK EventProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM
                             if(GetFileAttributes(searchpath) != INVALID_FILE_ATTRIBUTES)
                             {
 #ifdef CONFIG_LIBCDIO
-                                if (cdrom_device) free(cdrom_device);
+                                free(cdrom_device);
                                 cdrom_device = strdup(device + pos);
                                 /* mplayer doesn't seem to like the trailing \ after the device name */
                                 cdrom_device[2]=0;
@@ -1422,7 +1422,7 @@ int create_window(gui_t *gui, char *skindir)
     {
         mp_msg(MSGT_GPLAYER, MSGL_FATAL, "[GUI] fatal error during skinload\n");
         /* Set default Skin */
-        if (skinName) free(skinName);
+        free(skinName);
         skinName = strdup("Blue");
         /* then force write conf */
         cfg_write();
diff --git a/gui/win32/playlist.c b/gui/win32/playlist.c
index 344e996..720defe 100644
--- a/gui/win32/playlist.c
+++ b/gui/win32/playlist.c
@@ -88,9 +88,9 @@ static void remove_track(playlist_t *playlist, int number)
         }
         else
         {
-            if(tmp[i]->filename) free(tmp[i]->filename);
-            if(tmp[i]->artist) free(tmp[i]->artist);
-            if(tmp[i]->title) free(tmp[i]->title);
+            free(tmp[i]->filename);
+            free(tmp[i]->artist);
+            free(tmp[i]->title);
             free(tmp[i]);
         }
     }
diff --git a/gui/win32/skinload.c b/gui/win32/skinload.c
index 417d103..e0c34e0 100644
--- a/gui/win32/skinload.c
+++ b/gui/win32/skinload.c
@@ -185,8 +185,8 @@ static void freeimages(skin_t *skin)
     {
         if(skin->images && skin->images[i])
         {
-            if(skin->images[i]->data) free(skin->images[i]->data);
-            if(skin->images[i]->name) free(skin->images[i]->name);
+            free(skin->images[i]->data);
+            free(skin->images[i]->name);
             free(skin->images[i]);
         }
     }
@@ -223,29 +223,21 @@ static char *findnextstring(char *temp, const char *desc, int *base)
 static void freeskin(skin_t *skin)
 {
     unsigned int i;
-    if(skin->skindir)
-    {
-        free(skin->skindir);
-        skin->skindir = NULL;
-    }
+
+    free(skin->skindir);
+    skin->skindir = NULL;
 
     for (i=1; i<=skin->lastusedid; i++)
         skin->removewidget(skin, i);
 
-    if(skin->widgets)
-    {
-        free(skin->widgets);
-        skin->widgets = NULL;
-    }
+    free(skin->widgets);
+    skin->widgets = NULL;
 
     freeimages(skin);
     for(i=0; i<skin->windowcount; i++)
     {
-        if(skin->windows[i]->name)
-        {
-            free(skin->windows[i]->name);
-            skin->windows[i]->name = NULL;
-        }
+        free(skin->windows[i]->name);
+        skin->windows[i]->name = NULL;
         free(skin->windows[i]);
     }
 
@@ -255,17 +247,12 @@ static void freeskin(skin_t *skin)
     for (i=0; i<skin->fontcount; i++)
     {
         unsigned int x;
-        if(skin->fonts[i]->name)
-        {
-            free(skin->fonts[i]->name);
-            skin->fonts[i]->name = NULL;
-        }
 
-        if(skin->fonts[i]->id)
-        {
-            free(skin->fonts[i]->id);
-            skin->fonts[i]->id = NULL;
-        }
+        free(skin->fonts[i]->name);
+        skin->fonts[i]->name = NULL;
+
+        free(skin->fonts[i]->id);
+        skin->fonts[i]->id = NULL;
 
         for (x=0; x<skin->fonts[i]->charcount; x++)
         {
@@ -273,11 +260,8 @@ static void freeskin(skin_t *skin)
             skin->fonts[i]->chars[x] = NULL;
         }
 
-        if(skin->fonts[i]->chars)
-        {
-            free(skin->fonts[i]->chars);
-            skin->fonts[i]->chars = NULL;
-        }
+        free(skin->fonts[i]->chars);
+        skin->fonts[i]->chars = NULL;
 
         free(skin->fonts[i]);
         skin->fonts[i] = NULL;
@@ -301,8 +285,7 @@ static void removewidget(skin_t *skin, int id)
     {
         if(skin->widgets[i]->id == id)
         {
-            if(skin->widgets[i]->label)
-                free(skin->widgets[i]->label);
+            free(skin->widgets[i]->label);
             free(skin->widgets[i]);
             skin->widgets[i] = NULL;
         }
diff --git a/input/ar.c b/input/ar.c
index a003b7e..f1c1ee6 100644
--- a/input/ar.c
+++ b/input/ar.c
@@ -276,8 +276,7 @@ int mp_input_ar_init(void)
         (*queue)->addElement(queue, cookies[i], 0);
 
     // not used anymore
-    if (cookies != NULL)
-        free(cookies);
+    free(cookies);
 
     // Start data delivery to the queue.
     (*queue)->start(queue);
@@ -289,8 +288,7 @@ int mp_input_ar_init(void)
     return 0;
 
 mp_input_ar_init_error:
-    if (cookies != NULL)
-        free(cookies);
+    free(cookies);
     if (hidDeviceInterface != NULL) {
         if (*hidDeviceInterface != NULL) {
             (*hidDeviceInterface)->close(hidDeviceInterface);
diff --git a/input/input.c b/input/input.c
index 011353f..356e813 100644
--- a/input/input.c
+++ b/input/input.c
@@ -653,8 +653,7 @@ mp_input_rm_cmd_fd(int fd) {
     return;
   if(cmd_fds[i].close_func)
     cmd_fds[i].close_func(cmd_fds[i].fd);
-  if(cmd_fds[i].buffer)
-    free(cmd_fds[i].buffer);
+  free(cmd_fds[i].buffer);
 
   if(i + 1 < num_cmd_fd)
     memmove(&cmd_fds[i],&cmd_fds[i+1],(num_cmd_fd - i - 1)*sizeof(mp_input_fd_t));
@@ -1151,10 +1150,8 @@ interpret_key(int code, int paused)
     num_key_down--;
     last_key_down = 0;
     ar_state = -1;
-    if(ar_cmd) {
-      mp_cmd_free(ar_cmd);
-      ar_cmd = NULL;
-    }
+    mp_cmd_free(ar_cmd);
+    ar_cmd = NULL;
     return ret;
 }
 
@@ -1387,11 +1384,10 @@ mp_cmd_free(mp_cmd_t* cmd) {
 //#endif
   if ( !cmd ) return;
 
-  if(cmd->name)
-    free(cmd->name);
+  free(cmd->name);
 
   for(i=0; i < MP_CMD_MAX_ARGS && cmd->args[i].type != -1; i++) {
-    if(cmd->args[i].type == MP_CMD_ARG_STRING && cmd->args[i].v.s != NULL)
+    if(cmd->args[i].type == MP_CMD_ARG_STRING)
       free(cmd->args[i].v.s);
   }
   free(cmd);
@@ -1524,8 +1520,7 @@ mp_input_bind_keys(const int keys[MP_MAX_KEY_DOWN+1], char* cmd) {
     memset(&bind_section->cmd_binds[i],0,2*sizeof(mp_cmd_bind_t));
     bind = &bind_section->cmd_binds[i];
   }
-  if(bind->cmd)
-    free(bind->cmd);
+  free(bind->cmd);
   bind->cmd = strdup(cmd);
   memcpy(bind->input,keys,(MP_MAX_KEY_DOWN+1)*sizeof(int));
 }
@@ -1701,7 +1696,7 @@ mp_input_set_section(char *name) {
 
   cmd_binds=NULL;
   cmd_binds_default=NULL;
-  if(section) free(section);
+  free(section);
   if(name) section=strdup(name); else section=strdup("default");
   if((bind_section=mp_input_get_bind_section(section)))
     cmd_binds=bind_section->cmd_binds;
diff --git a/input/lirc.c b/input/lirc.c
index d926988..aeb2616 100644
--- a/input/lirc.c
+++ b/input/lirc.c
@@ -116,10 +116,8 @@ int mp_input_lirc_read(int fd,char* dest, int s) {
 
 void
 mp_input_lirc_close(int fd) {
-  if(cmd_buf) {
-    free(cmd_buf);
-    cmd_buf = NULL;
-  }
+  free(cmd_buf);
+  cmd_buf = NULL;
   lirc_freeconfig(lirc_config);
   lirc_deinit();
 }
diff --git a/libaf/af.c b/libaf/af.c
index 82beb28..c07cee2 100644
--- a/libaf/af.c
+++ b/libaf/af.c
@@ -625,8 +625,7 @@ int af_resize_local_buffer(af_instance_t* af, af_data_t* data)
   mp_msg(MSGT_AFILTER, MSGL_V, "[libaf] Reallocating memory in module %s, "
 	 "old len = %i, new len = %i\n",af->info->name,af->data->len,len);
   // If there is a buffer free it
-  if(af->data->audio)
-    free(af->data->audio);
+  free(af->data->audio);
   // Create new buffer and check that it is OK
   af->data->audio = malloc(len);
   if(!af->data->audio){
diff --git a/libaf/af_center.c b/libaf/af_center.c
index d3c867c..1cc3626 100644
--- a/libaf/af_center.c
+++ b/libaf/af_center.c
@@ -78,9 +78,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
 // Deallocate memory
 static void uninit(struct af_instance_s* af)
 {
-  if(af->data)
     free(af->data);
-  if(af->setup)
     free(af->setup);
 }
 
diff --git a/libaf/af_comp.c b/libaf/af_comp.c
index 4999612..db88dad 100644
--- a/libaf/af_comp.c
+++ b/libaf/af_comp.c
@@ -107,9 +107,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
 // Deallocate memory
 static void uninit(struct af_instance_s* af)
 {
-  if(af->data)
     free(af->data);
-  if(af->setup)
     free(af->setup);
 }
 
diff --git a/libaf/af_delay.c b/libaf/af_delay.c
index 84a76c4..f0a9704 100644
--- a/libaf/af_delay.c
+++ b/libaf/af_delay.c
@@ -49,10 +49,8 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
     int i;
 
     // Free prevous delay queues
-    for(i=0;i<af->data->nch;i++){
-      if(s->q[i])
-	free(s->q[i]);
-    }
+    for(i=0;i<af->data->nch;i++)
+      free(s->q[i]);
 
     af->data->rate   = ((af_data_t*)arg)->rate;
     af->data->nch    = ((af_data_t*)arg)->nch;
@@ -112,13 +110,11 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
 static void uninit(struct af_instance_s* af)
 {
   int i;
-  if(af->data)
-    free(af->data);
+
+  free(af->data);
   for(i=0;i<AF_NCH;i++)
-    if(((af_delay_t*)(af->setup))->q[i])
       free(((af_delay_t*)(af->setup))->q[i]);
-  if(af->setup)
-    free(af->setup);
+  free(af->setup);
 }
 
 // Filter data through filter
diff --git a/libaf/af_dummy.c b/libaf/af_dummy.c
index 2d37592..ba921eb 100644
--- a/libaf/af_dummy.c
+++ b/libaf/af_dummy.c
@@ -41,7 +41,6 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
 // Deallocate memory
 static void uninit(struct af_instance_s* af)
 {
-  if(af->data)
     free(af->data);
 }
 
diff --git a/libaf/af_equalizer.c b/libaf/af_equalizer.c
index bd69fde..318b7a7 100644
--- a/libaf/af_equalizer.c
+++ b/libaf/af_equalizer.c
@@ -181,9 +181,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
 // Deallocate memory
 static void uninit(struct af_instance_s* af)
 {
-  if(af->data)
     free(af->data);
-  if(af->setup)
     free(af->setup);
 }
 
diff --git a/libaf/af_export.c b/libaf/af_export.c
index 780df80..193271b 100644
--- a/libaf/af_export.c
+++ b/libaf/af_export.c
@@ -73,7 +73,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
     int mapsize;
 
     // Free previous buffers
-    if (s->buf && s->buf[0])
+    if (s->buf)
       free(s->buf[0]);
 
     // unmap previous area
@@ -136,8 +136,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
     char *str = arg;
 
     if (!str){
-      if(s->filename)
-	free(s->filename);
+      free(s->filename);
 
       s->filename = get_path(SHARED_FILE);
       return AF_OK;
@@ -146,8 +145,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
     while((str[i]) && (str[i] != ':'))
       i++;
 
-    if(s->filename)
-      free(s->filename);
+    free(s->filename);
 
     s->filename = calloc(i + 1, 1);
     memcpy(s->filename, str, i);
@@ -177,14 +175,12 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
 */
 static void uninit( struct af_instance_s* af )
 {
-  if (af->data){
-    free(af->data);
-    af->data = NULL;
-  }
+  free(af->data);
+  af->data = NULL;
 
   if(af->setup){
     af_export_t* s = af->setup;
-    if (s->buf && s->buf[0])
+    if (s->buf)
       free(s->buf[0]);
 
     // Free mmaped area
@@ -194,8 +190,7 @@ static void uninit( struct af_instance_s* af )
     if(s->fd > -1)
       close(s->fd);
 
-    if(s->filename)
-	free(s->filename);
+    free(s->filename);
 
     free(af->setup);
     af->setup = NULL;
diff --git a/libaf/af_extrastereo.c b/libaf/af_extrastereo.c
index 28183bc..347c257 100644
--- a/libaf/af_extrastereo.c
+++ b/libaf/af_extrastereo.c
@@ -82,9 +82,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
 // Deallocate memory
 static void uninit(struct af_instance_s* af)
 {
-  if(af->data)
     free(af->data);
-  if(af->setup)
     free(af->setup);
 }
 
diff --git a/libaf/af_gate.c b/libaf/af_gate.c
index 38db9ff..30ed20a 100644
--- a/libaf/af_gate.c
+++ b/libaf/af_gate.c
@@ -102,9 +102,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
 // Deallocate memory
 static void uninit(struct af_instance_s* af)
 {
-  if(af->data)
     free(af->data);
-  if(af->setup)
     free(af->setup);
 }
 
diff --git a/libaf/af_hrtf.c b/libaf/af_hrtf.c
index 30af96a..d8ec33e 100644
--- a/libaf/af_hrtf.c
+++ b/libaf/af_hrtf.c
@@ -349,32 +349,19 @@ static void uninit(struct af_instance_s *af)
     if(af->setup) {
 	af_hrtf_t *s = af->setup;
 
-	if(s->lf)
-	    free(s->lf);
-	if(s->rf)
-	    free(s->rf);
-	if(s->lr)
-	    free(s->lr);
-	if(s->rr)
-	    free(s->rr);
-	if(s->cf)
-	    free(s->cf);
-	if(s->cr)
-	    free(s->cr);
-	if(s->ba_l)
-	    free(s->ba_l);
-	if(s->ba_r)
-	    free(s->ba_r);
-	if(s->ba_ir)
-	    free(s->ba_ir);
-	if(s->fwrbuf_l)
-	   free(s->fwrbuf_l);
-	if(s->fwrbuf_r)
-	   free(s->fwrbuf_r);
-	if(s->fwrbuf_lr)
-	   free(s->fwrbuf_lr);
-	if(s->fwrbuf_rr)
-	   free(s->fwrbuf_rr);
+	free(s->lf);
+	free(s->rf);
+	free(s->lr);
+	free(s->rr);
+	free(s->cf);
+	free(s->cr);
+	free(s->ba_l);
+	free(s->ba_r);
+	free(s->ba_ir);
+	free(s->fwrbuf_l);
+	free(s->fwrbuf_r);
+	free(s->fwrbuf_lr);
+	free(s->fwrbuf_rr);
 	free(af->setup);
     }
     if(af->data)
diff --git a/libaf/af_karaoke.c b/libaf/af_karaoke.c
index e0f0d42..780349d 100644
--- a/libaf/af_karaoke.c
+++ b/libaf/af_karaoke.c
@@ -46,8 +46,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
 // Deallocate memory
 static void uninit(struct af_instance_s* af)
 {
-	if(af->data)
-		free(af->data);
+	free(af->data);
 }
 
 // Filter data through filter
diff --git a/libaf/af_ladspa.c b/libaf/af_ladspa.c
index 0193c36..c8228cc 100644
--- a/libaf/af_ladspa.c
+++ b/libaf/af_ladspa.c
@@ -563,7 +563,7 @@ static int control(struct af_instance_s *af, int cmd, void *arg) {
 
         /* set new setup->myname */
 
-        if(setup->myname) free(setup->myname);
+        free(setup->myname);
         setup->myname = calloc(strlen(af_info_ladspa.name)+strlen(setup->file)+
                                                     strlen(setup->label)+6, 1);
         snprintf(setup->myname, strlen(af_info_ladspa.name)+
@@ -653,8 +653,7 @@ static int control(struct af_instance_s *af, int cmd, void *arg) {
 static void uninit(struct af_instance_s *af) {
     int i;
 
-    if (af->data)
-        free(af->data);
+    free(af->data);
     if (af->setup) {
         af_ladspa_t *setup = (af_ladspa_t*) af->setup;
         const LADSPA_Descriptor *pdes = setup->plugin_descriptor;
@@ -672,36 +671,24 @@ static void uninit(struct af_instance_s *af) {
             free(setup->chhandles);
         }
 
-        if (setup->file)
-            free(setup->file);
-        if (setup->label)
-            free(setup->label);
-        if (setup->inputcontrolsmap)
-            free(setup->inputcontrolsmap);
-        if (setup->inputcontrols)
-            free(setup->inputcontrols);
-        if (setup->outputcontrolsmap)
-            free(setup->outputcontrolsmap);
-        if (setup->outputcontrols)
-            free(setup->outputcontrols);
-        if (setup->inputs)
-            free(setup->inputs);
-        if (setup->outputs)
-            free(setup->outputs);
+        free(setup->file);
+        free(setup->label);
+        free(setup->inputcontrolsmap);
+        free(setup->inputcontrols);
+        free(setup->outputcontrolsmap);
+        free(setup->outputcontrols);
+        free(setup->inputs);
+        free(setup->outputs);
 
         if (setup->inbufs) {
-            for(i=0; i<setup->nch; i++) {
-                if (setup->inbufs[i])
-                    free(setup->inbufs[i]);
-            }
+            for(i=0; i<setup->nch; i++)
+                free(setup->inbufs[i]);
             free(setup->inbufs);
         }
 
         if (setup->outbufs) {
-            for(i=0; i<setup->nch; i++) {
-                if (setup->outbufs[i])
-                    free(setup->outbufs[i]);
-            }
+            for(i=0; i<setup->nch; i++)
+                free(setup->outbufs[i]);
             free(setup->outbufs);
         }
 
@@ -754,17 +741,13 @@ static af_data_t* play(struct af_instance_s *af, af_data_t *data) {
                                                                 setup->myname);
 
             if(setup->inbufs) {
-                for(i=0; i<setup->nch; i++) {
-                    if(setup->inbufs[i])
-                        free(setup->inbufs[i]);
-                }
+                for(i=0; i<setup->nch; i++)
+                    free(setup->inbufs[i]);
                 free(setup->inbufs);
             }
             if(setup->outbufs) {
-                for(i=0; i<setup->nch; i++) {
-                    if(setup->outbufs[i])
-                        free(setup->outbufs[i]);
-                }
+                for(i=0; i<setup->nch; i++)
+                    free(setup->outbufs[i]);
                 free(setup->outbufs);
             }
         } /* everything is freed */
diff --git a/libaf/af_pan.c b/libaf/af_pan.c
index 9a3e520..e3f7d29 100644
--- a/libaf/af_pan.c
+++ b/libaf/af_pan.c
@@ -144,8 +144,7 @@ static void uninit(struct af_instance_s* af)
   if(af->data)
     free(af->data->audio);
   free(af->data);
-  if(af->setup)
-    free(af->setup);
+  free(af->setup);
 }
 
 // Filter data through filter
diff --git a/libaf/af_resample.c b/libaf/af_resample.c
index 5dd0e70..6809c48 100644
--- a/libaf/af_resample.c
+++ b/libaf/af_resample.c
@@ -236,8 +236,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
       fc = 1/(float)(max(s->up,s->dn));
       // Allocate space for polyphase filter bank and prototype filter
       w = malloc(sizeof(float) * s->up *L);
-      if(NULL != s->w)
-	free(s->w);
+      free(s->w);
       s->w = malloc(L*s->up*af->data->bps);
 
       // Design prototype filter type using Kaiser window with beta = 10
diff --git a/libaf/af_sinesuppress.c b/libaf/af_sinesuppress.c
index 56f6076..3a69a86 100644
--- a/libaf/af_sinesuppress.c
+++ b/libaf/af_sinesuppress.c
@@ -98,9 +98,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
 // Deallocate memory
 static void uninit(struct af_instance_s* af)
 {
-  if(af->data)
     free(af->data);
-  if(af->setup)
     free(af->setup);
 }
 
diff --git a/libaf/af_sub.c b/libaf/af_sub.c
index ada1950..4330515 100644
--- a/libaf/af_sub.c
+++ b/libaf/af_sub.c
@@ -123,9 +123,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
 // Deallocate memory
 static void uninit(struct af_instance_s* af)
 {
-  if(af->data)
     free(af->data);
-  if(af->setup)
     free(af->setup);
 }
 
diff --git a/libaf/af_surround.c b/libaf/af_surround.c
index 098234b..28f69a5 100644
--- a/libaf/af_surround.c
+++ b/libaf/af_surround.c
@@ -109,10 +109,8 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
     }
 
     // Free previous delay queues
-    if(s->dl)
-      free(s->dl);
-    if(s->dr)
-      free(s->dr);
+    free(s->dl);
+    free(s->dr);
     // Allocate new delay queues
     s->dl = calloc(LD,af->data->bps);
     s->dr = calloc(LD,af->data->bps);
diff --git a/libaf/af_sweep.c b/libaf/af_sweep.c
index e1890c6..3280125 100644
--- a/libaf/af_sweep.c
+++ b/libaf/af_sweep.c
@@ -60,12 +60,8 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
 // Deallocate memory
 static void uninit(struct af_instance_s* af)
 {
-    if(af->data)
-        free(af->data);
-    if(af->setup){
-        af_sweept *s = af->setup;
-        free(s);
-    }
+    free(af->data);
+    free(af->setup);
 }
 
 // Filter data through filter
diff --git a/libaf/af_volnorm.c b/libaf/af_volnorm.c
index 9bfaef6..f7698e7 100644
--- a/libaf/af_volnorm.c
+++ b/libaf/af_volnorm.c
@@ -116,9 +116,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
 // Deallocate memory
 static void uninit(struct af_instance_s* af)
 {
-  if(af->data)
     free(af->data);
-  if(af->setup)
     free(af->setup);
 }
 
diff --git a/libaf/af_volume.c b/libaf/af_volume.c
index e523333..768f67c 100644
--- a/libaf/af_volume.c
+++ b/libaf/af_volume.c
@@ -133,9 +133,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
 // Deallocate memory
 static void uninit(struct af_instance_s* af)
 {
-  if(af->data)
     free(af->data);
-  if(af->setup)
     free(af->setup);
 }
 
diff --git a/libao2/ao_coreaudio.c b/libao2/ao_coreaudio.c
index d4835e8..010d869 100644
--- a/libao2/ao_coreaudio.c
+++ b/libao2/ao_coreaudio.c
@@ -728,7 +728,7 @@ static int OpenSPDIF(void)
                     ao_msg(MSGT_AO, MSGL_WARN,
                            "Could not retrieve the original stream format: [%4.4s]\n",
                            (char *)&err);
-                    if (p_format_list) free(p_format_list);
+                    free(p_format_list);
                     continue;
                 }
                 ao->b_revert = 1;
@@ -755,9 +755,9 @@ static int OpenSPDIF(void)
                 ao->stream_format = p_format_list[i_current_rate_format];
             else ao->stream_format = p_format_list[i_backup_rate_format]; /* And if we have to, any digital format will be just fine (highest rate possible). */
         }
-        if (p_format_list) free(p_format_list);
+        free(p_format_list);
     }
-    if (p_streams) free(p_streams);
+    free(p_streams);
 
     if (ao->i_stream_index < 0)
     {
diff --git a/libao2/ao_pcm.c b/libao2/ao_pcm.c
index 1d71715..ab9ea1b 100644
--- a/libao2/ao_pcm.c
+++ b/libao2/ao_pcm.c
@@ -218,8 +218,7 @@ static void uninit(int immed){
         }
     }
     fclose(fp);
-    if (ao_outputfilename)
-        free(ao_outputfilename);
+    free(ao_outputfilename);
     ao_outputfilename = NULL;
 }
 
diff --git a/libao2/ao_sun.c b/libao2/ao_sun.c
index 3624024..b659c81 100644
--- a/libao2/ao_sun.c
+++ b/libao2/ao_sun.c
@@ -228,7 +228,7 @@ static int realtime_samplecounter_available(char *dev)
 
 
 error:
-    if (silence != NULL) free(silence);
+    free(silence);
     if (fd >= 0) {
 	// remove the 0 bytes from the above measurement from the
 	// audio driver's STREAMS queue
diff --git a/libao2/audio_out.c b/libao2/audio_out.c
index 4ac5489..a3f06d8 100644
--- a/libao2/audio_out.c
+++ b/libao2/audio_out.c
@@ -149,10 +149,8 @@ const ao_functions_t* init_best_audio_out(char** ao_list,int use_plugin,int rate
             mp_msg(MSGT_AO, MSGL_FATAL, MSGTR_AO_ALSA9_1x_Removed);
             exit_player(EXIT_NONE);
         }
-        if (ao_subdevice) {
-            free(ao_subdevice);
-            ao_subdevice = NULL;
-        }
+        free(ao_subdevice);
+        ao_subdevice = NULL;
         ao_subdevice=strchr(ao,':');
         if(ao_subdevice){
             ao_len = ao_subdevice - ao;
@@ -181,10 +179,8 @@ const ao_functions_t* init_best_audio_out(char** ao_list,int use_plugin,int rate
         ++ao_list;
         if(!(ao_list[0])) return NULL; // do NOT fallback to others
       }
-    if (ao_subdevice) {
-        free(ao_subdevice);
-        ao_subdevice = NULL;
-    }
+    free(ao_subdevice);
+    ao_subdevice = NULL;
 
     mp_msg(MSGT_AO, MSGL_V, MSGTR_AO_TryingEveryKnown);
 
diff --git a/libmenu/menu.c b/libmenu/menu.c
index f56dee4..fcc3ce4 100644
--- a/libmenu/menu.c
+++ b/libmenu/menu.c
@@ -124,7 +124,7 @@ static int menu_parse_config(char* buffer) {
     if(!name) {
       mp_msg(MSGT_GLOBAL,MSGL_WARN,MSGTR_LIBMENU_MenuDefinitionsNeedANameAttrib,parser->line);
       free(element);
-      if(body) free(body);
+      free(body);
       asx_free_attribs(attribs);
       continue;
     }
@@ -215,7 +215,7 @@ static int menu_parse_config(char* buffer) {
     } else {
       mp_msg(MSGT_GLOBAL,MSGL_WARN,MSGTR_LIBMENU_UnknownMenuType,element,parser->line);
       free(name);
-      if(body) free(body);
+      free(body);
     }
 
     free(element);
@@ -279,7 +279,7 @@ void menu_uninit(void) {
   for(i = 0 ; menu_list && menu_list[i].name ; i++) {
     free(menu_list[i].name);
     m_struct_free(&menu_list[i].type->priv_st,menu_list[i].cfg);
-    if(menu_list[i].args) free(menu_list[i].args);
+    free(menu_list[i].args);
   }
   free(menu_list);
   menu_count = 0;
diff --git a/libmenu/menu_cmdlist.c b/libmenu/menu_cmdlist.c
index f909ff5..2f08441 100644
--- a/libmenu/menu_cmdlist.c
+++ b/libmenu/menu_cmdlist.c
@@ -94,14 +94,10 @@ static void read_cmd(menu_t* menu,int cmd) {
 }
 
 static void free_entry(list_entry_t* entry) {
-  if(entry->ok)
-    free(entry->ok);
-  if(entry->cancel)
-    free(entry->cancel);
-  if(entry->left)
-    free(entry->left);
-  if(entry->right)
-    free(entry->right);
+  free(entry->ok);
+  free(entry->cancel);
+  free(entry->left);
+  free(entry->right);
   free(entry->p.txt);
   free(entry);
 }
@@ -133,7 +129,7 @@ static int parse_args(menu_t* menu,char* args) {
     if(!name) {
       mp_msg(MSGT_GLOBAL,MSGL_WARN,MSGTR_LIBMENU_ListMenuEntryDefinitionsNeedAName,parser->line);
       free(element);
-      if(body) free(body);
+      free(body);
       asx_free_attribs(attribs);
       continue;
     }
@@ -146,7 +142,7 @@ static int parse_args(menu_t* menu,char* args) {
     menu_list_add_entry(menu,m);
 
     free(element);
-    if(body) free(body);
+    free(body);
     asx_free_attribs(attribs);
   }
 }
diff --git a/libmenu/menu_console.c b/libmenu/menu_console.c
index 82e746f..77107aa 100644
--- a/libmenu/menu_console.c
+++ b/libmenu/menu_console.c
@@ -142,7 +142,7 @@ static void add_line(struct menu_priv_s* priv, char* l) {
     return;
   }
 
-  if(priv->num_lines >= priv->buf_lines && priv->lines[priv->last_line])
+  if(priv->num_lines >= priv->buf_lines)
     free(priv->lines[priv->last_line]);
   else
     priv->num_lines++;
diff --git a/libmenu/menu_filesel.c b/libmenu/menu_filesel.c
index 7b4a853..52d1d11 100644
--- a/libmenu/menu_filesel.c
+++ b/libmenu/menu_filesel.c
@@ -240,8 +240,7 @@ static int open_dir(menu_t* menu,char* args) {
 
   menu_list_init(menu);
 
-  if(mpriv->dir)
-    free(mpriv->dir);
+  free(mpriv->dir);
   mpriv->dir = strdup(args);
   if(mpriv->p.title && mpriv->p.title != mpriv->title && mpriv->p.title != cfg_dflt.p.title)
     free(mpriv->p.title);
diff --git a/libmenu/menu_param.c b/libmenu/menu_param.c
index 4b79278..0427e7b 100644
--- a/libmenu/menu_param.c
+++ b/libmenu/menu_param.c
@@ -84,7 +84,7 @@ static void entry_set_text(menu_t* menu, list_entry_t* e) {
     mp_property_print(e->prop, menu->ctx);
   int l,edit = (mpriv->edit && e == mpriv->p.current);
   if(!val || !val[0]) {
-    if(val) free(val);
+    free(val);
     if(mpriv->hide_na) {
       e->p.hide = 1;
       return;
@@ -93,7 +93,7 @@ static void entry_set_text(menu_t* menu, list_entry_t* e) {
   } else if(mpriv->hide_na)
       e->p.hide = 0;
   l = strlen(e->name) + 2 + strlen(val) + (edit ? 4 : 0) + 1;
-  if(e->p.txt) free(e->p.txt);
+  free(e->p.txt);
   e->p.txt = malloc(l);
   sprintf(e->p.txt,"%s: %s%s%s",e->name,edit ? "> " : "",val,edit ? " <" : "");
   free(val);
@@ -154,7 +154,8 @@ static int parse_args(menu_t* menu,char* args) {
     txt = asx_get_attrib("txt",attribs);
     if(!(name || txt)) {
       mp_msg(MSGT_OSD_MENU,MSGL_WARN,MSGTR_LIBMENU_PrefMenuEntryDefinitionsNeed,parser->line);
-      if(txt) free(txt), txt = NULL;
+      free(txt);
+      txt = NULL;
       goto next_element;
     }
     m = calloc(1,sizeof(struct list_entry_s));
@@ -177,8 +178,8 @@ static int parse_args(menu_t* menu,char* args) {
 
   next_element:
     free(element);
-    if(body) free(body);
-    if(name) free(name);
+    free(body);
+    free(name);
     asx_free_attribs(attribs);
   }
 }
@@ -254,10 +255,10 @@ static void read_cmd(menu_t* menu,int cmd) {
 
 static void free_entry(list_entry_t* entry) {
   free(entry->p.txt);
-  if(entry->name) free(entry->name);
-  if(entry->txt)  free(entry->txt);
-  if(entry->prop) free(entry->prop);
-  if(entry->menu) free(entry->menu);
+  free(entry->name);
+  free(entry->txt);
+  free(entry->prop);
+  free(entry->menu);
   free(entry);
 }
 
diff --git a/libmpcodecs/ad_mpc.c b/libmpcodecs/ad_mpc.c
index 31463ab..979dce6 100644
--- a/libmpcodecs/ad_mpc.c
+++ b/libmpcodecs/ad_mpc.c
@@ -121,8 +121,7 @@ static int preinit(sh_audio_t *sh) {
 }
 
 static void uninit(sh_audio_t *sh) {
-  if (sh->context)
-    free(sh->context);
+  free(sh->context);
   sh->context = NULL;
 }
 
diff --git a/libmpcodecs/ad_speex.c b/libmpcodecs/ad_speex.c
index a93a245..f80b4d6 100644
--- a/libmpcodecs/ad_speex.c
+++ b/libmpcodecs/ad_speex.c
@@ -126,8 +126,7 @@ static void uninit(sh_audio_t *sh) {
   if (ctx) {
     speex_bits_destroy(&ctx->bits);
     speex_decoder_destroy(ctx->dec_context);
-    if (ctx->hdr)
-      free(ctx->hdr);
+    free(ctx->hdr);
     free(ctx);
   }
   ctx = NULL;
diff --git a/libmpcodecs/dec_teletext.c b/libmpcodecs/dec_teletext.c
index 645c595..ee07ab8 100644
--- a/libmpcodecs/dec_teletext.c
+++ b/libmpcodecs/dec_teletext.c
@@ -1101,8 +1101,7 @@ static int decode_pkt0(priv_vbi_t* priv,unsigned char* data,int magAddr)
         if(d[i]&0x80){
             pll_add(priv,2,4);
 
-            if(priv->mag[magAddr].pt)
-                  free(priv->mag[magAddr].pt);
+            free(priv->mag[magAddr].pt);
             priv->mag[magAddr].pt=NULL;
             priv->mag[magAddr].order=0;
             return 0;
@@ -1754,10 +1753,8 @@ int teletext_control(void* p, int cmd, void *arg)
     }
     case TV_VBI_CONTROL_STOP:
     {
-        if(priv->mag)
-            free(priv->mag);
-        if(priv->ptsp)
-            free(priv->ptsp);
+        free(priv->mag);
+        free(priv->ptsp);
         destroy_cache(priv);
         priv->page_changed=1;
         pthread_mutex_destroy(&priv->buffer_mutex);
diff --git a/libmpcodecs/mp_image.c b/libmpcodecs/mp_image.c
index 56229b1..d250376 100644
--- a/libmpcodecs/mp_image.c
+++ b/libmpcodecs/mp_image.c
@@ -191,7 +191,7 @@ void free_mp_image(mp_image_t* mpi){
     if(!mpi) return;
     if(mpi->flags&MP_IMGFLAG_ALLOCATED){
 	/* becouse we allocate the whole image in once */
-	if(mpi->planes[0]) av_free(mpi->planes[0]);
+	av_free(mpi->planes[0]);
 	if (mpi->flags & MP_IMGFLAG_RGB_PALETTE)
 	    av_free(mpi->planes[1]);
     }
diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c
index 368e45d..6ab694a 100644
--- a/libmpcodecs/vd_ffmpeg.c
+++ b/libmpcodecs/vd_ffmpeg.c
@@ -480,8 +480,7 @@ static void uninit(sh_video_t *sh){
 
     av_freep(&avctx);
     av_freep(&ctx->pic);
-    if (ctx)
-        free(ctx);
+    free(ctx);
 }
 
 static void draw_slice(struct AVCodecContext *s,
diff --git a/libmpcodecs/vd_libmpeg2.c b/libmpcodecs/vd_libmpeg2.c
index 2968afa..a138882 100644
--- a/libmpcodecs/vd_libmpeg2.c
+++ b/libmpcodecs/vd_libmpeg2.c
@@ -125,7 +125,7 @@ static void uninit(sh_video_t *sh){
     int i;
     vd_libmpeg2_ctx_t *context = sh->context;
     mpeg2dec_t * mpeg2dec = context->mpeg2dec;
-    if (context->pending_buffer) free(context->pending_buffer);
+    free(context->pending_buffer);
     mpeg2dec->decoder.convert=NULL;
     mpeg2dec->decoder.convert_id=NULL;
     mpeg2_close (mpeg2dec);
diff --git a/libmpcodecs/vd_realvid.c b/libmpcodecs/vd_realvid.c
index eae526f..b7e166b 100644
--- a/libmpcodecs/vd_realvid.c
+++ b/libmpcodecs/vd_realvid.c
@@ -356,8 +356,7 @@ static void uninit(sh_video_t *sh){
 #endif
 	rv_handle=NULL;
 	initialized = 0;
-	if (buffer)
-	    free(buffer);
+	free(buffer);
 	buffer = NULL;
 	bufsz = 0;
 }
@@ -387,7 +386,7 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
 	if(len<=0 || flags&2) return NULL; // skipped frame || hardframedrop
 
 	if (bufsz < sh->disp_w*sh->disp_h*3/2) {
-	    if (buffer) free(buffer);
+	    free(buffer);
 	    bufsz = sh->disp_w*sh->disp_h*3/2;
 	    buffer=malloc(bufsz);
 	    if (!buffer) return 0;
diff --git a/libmpcodecs/vd_xanim.c b/libmpcodecs/vd_xanim.c
index d8a3a74..7341088 100644
--- a/libmpcodecs/vd_xanim.c
+++ b/libmpcodecs/vd_xanim.c
@@ -771,8 +771,7 @@ static void uninit(sh_video_t *sh)
 	    close_func();
 	}
     dlclose(priv->file_handler);
-    if (priv->decinfo != NULL)
-	free(priv->decinfo);
+    free(priv->decinfo);
     free(priv);
 }
 
diff --git a/libmpcodecs/ve_nuv.c b/libmpcodecs/ve_nuv.c
index bf9e694..4652a02 100644
--- a/libmpcodecs/ve_nuv.c
+++ b/libmpcodecs/ve_nuv.c
@@ -203,12 +203,9 @@ static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts){
 
 static void uninit(struct vf_instance *vf) {
 
-  if(vf->priv->buffer)
-    free(vf->priv->buffer);
-  if(vf->priv->zbuffer)
-    free(vf->priv->zbuffer);
-  if(vf->priv->zmem)
-    free(vf->priv->zmem);
+  free(vf->priv->buffer);
+  free(vf->priv->zbuffer);
+  free(vf->priv->zmem);
 
 }
 
diff --git a/libmpcodecs/ve_xvid4.c b/libmpcodecs/ve_xvid4.c
index 7608c6c..4fd180c 100644
--- a/libmpcodecs/ve_xvid4.c
+++ b/libmpcodecs/ve_xvid4.c
@@ -461,15 +461,9 @@ uninit(struct vf_instance *vf)
 	}
 
         /* Free allocated memory */
-	if(mod->frame.quant_intra_matrix)
-	    free(mod->frame.quant_intra_matrix);
-
-	if(mod->frame.quant_inter_matrix)
-	    free(mod->frame.quant_inter_matrix);
-
-	if(mod->mux->bih)
-	    free(mod->mux->bih);
-
+	free(mod->frame.quant_intra_matrix);
+	free(mod->frame.quant_inter_matrix);
+	free(mod->mux->bih);
 	free(vf->priv);
 	vf->priv=NULL;
 
@@ -822,7 +816,7 @@ static int dispatch_settings(xvid_mplayer_module_t *mod)
 		frame->quant_intra_matrix = (unsigned char*)read_matrix(xvidenc_intra_matrix_file);
 		if(frame->quant_intra_matrix != NULL) {
 			mp_msg(MSGT_MENCODER, MSGL_INFO, "xvid: Loaded Intra matrix (switching to mpeg quantization type)\n");
-			if(xvidenc_quant_method) free(xvidenc_quant_method);
+			free(xvidenc_quant_method);
 			xvidenc_quant_method = strdup("mpeg");
 		}
 	}
@@ -830,7 +824,7 @@ static int dispatch_settings(xvid_mplayer_module_t *mod)
 		frame->quant_inter_matrix = read_matrix(xvidenc_inter_matrix_file);
 		if(frame->quant_inter_matrix) {
 			mp_msg(MSGT_MENCODER, MSGL_INFO, "\nxvid: Loaded Inter matrix (switching to mpeg quantization type)\n");
-			if(xvidenc_quant_method) free(xvidenc_quant_method);
+			free(xvidenc_quant_method);
 			xvidenc_quant_method = strdup("mpeg");
 		}
 	}
diff --git a/libmpcodecs/vf_ass.c b/libmpcodecs/vf_ass.c
index 8c3a954..f2e4885 100644
--- a/libmpcodecs/vf_ass.c
+++ b/libmpcodecs/vf_ass.c
@@ -383,12 +383,9 @@ static int control(vf_instance_t *vf, int request, void *data)
 
 static void uninit(struct vf_instance *vf)
 {
-    if (vf->priv->planes[1])
-        free(vf->priv->planes[1]);
-    if (vf->priv->planes[2])
-        free(vf->priv->planes[2]);
-    if (vf->priv->dirty_rows)
-        free(vf->priv->dirty_rows);
+    free(vf->priv->planes[1]);
+    free(vf->priv->planes[2]);
+    free(vf->priv->dirty_rows);
 }
 
 static const unsigned int fmt_list[] = {
diff --git a/libmpcodecs/vf_blackframe.c b/libmpcodecs/vf_blackframe.c
index 1b00e99..244da01 100644
--- a/libmpcodecs/vf_blackframe.c
+++ b/libmpcodecs/vf_blackframe.c
@@ -115,7 +115,7 @@ static int control(struct vf_instance *vf, int request, void* data){
 }
 
 static void uninit(struct vf_instance *vf) {
-    if (vf->priv) free(vf->priv);
+    free(vf->priv);
 }
 
 static int vf_open(vf_instance_t *vf, char *args){
diff --git a/libmpcodecs/vf_denoise3d.c b/libmpcodecs/vf_denoise3d.c
index d18b8cb..4d1f16c 100644
--- a/libmpcodecs/vf_denoise3d.c
+++ b/libmpcodecs/vf_denoise3d.c
@@ -49,7 +49,7 @@ static int config(struct vf_instance *vf,
         int width, int height, int d_width, int d_height,
 	unsigned int flags, unsigned int outfmt){
 
-	if(vf->priv->Line) free(vf->priv->Line);
+	free(vf->priv->Line);
         vf->priv->Line = malloc(width);
 	vf->priv->pmpi=NULL;
 //        vf->default_caps &= !VFCAP_ACCEPT_STRIDE;
diff --git a/libmpcodecs/vf_eq.c b/libmpcodecs/vf_eq.c
index 1cbffb2..5925c86 100644
--- a/libmpcodecs/vf_eq.c
+++ b/libmpcodecs/vf_eq.c
@@ -215,7 +215,7 @@ static int query_format(struct vf_instance *vf, unsigned int fmt)
 
 static void uninit(struct vf_instance *vf)
 {
-	if (vf->priv->buf) free(vf->priv->buf);
+	free(vf->priv->buf);
 	free(vf->priv);
 }
 
diff --git a/libmpcodecs/vf_fspp.c b/libmpcodecs/vf_fspp.c
index 1819ac6..c844221 100644
--- a/libmpcodecs/vf_fspp.c
+++ b/libmpcodecs/vf_fspp.c
@@ -576,13 +576,13 @@ static void uninit(struct vf_instance *vf)
 {
     if(!vf->priv) return;
 
-    if(vf->priv->temp) av_free(vf->priv->temp);
+    av_free(vf->priv->temp);
     vf->priv->temp= NULL;
-    if(vf->priv->src)  av_free(vf->priv->src);
+    av_free(vf->priv->src);
     vf->priv->src= NULL;
-    //if(vf->priv->avctx) free(vf->priv->avctx);
+    //free(vf->priv->avctx);
     //vf->priv->avctx= NULL;
-    if(vf->priv->non_b_qp) free(vf->priv->non_b_qp);
+    free(vf->priv->non_b_qp);
     vf->priv->non_b_qp= NULL;
 
     av_free(vf->priv);
diff --git a/libmpcodecs/vf_geq.c b/libmpcodecs/vf_geq.c
index 5d9e63e..ffbb42c 100644
--- a/libmpcodecs/vf_geq.c
+++ b/libmpcodecs/vf_geq.c
@@ -128,8 +128,6 @@ static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts){
 }
 
 static void uninit(struct vf_instance *vf){
-    if(!vf->priv) return;
-
     av_free(vf->priv);
     vf->priv=NULL;
 }
diff --git a/libmpcodecs/vf_hqdn3d.c b/libmpcodecs/vf_hqdn3d.c
index 4e5e170..95cdba1 100644
--- a/libmpcodecs/vf_hqdn3d.c
+++ b/libmpcodecs/vf_hqdn3d.c
@@ -44,11 +44,17 @@ struct vf_priv_s {
 
 /***************************************************************************/
 
-static void uninit(struct vf_instance *vf){
-	if(vf->priv->Line){free(vf->priv->Line);vf->priv->Line=NULL;}
-	if(vf->priv->Frame[0]){free(vf->priv->Frame[0]);vf->priv->Frame[0]=NULL;}
-	if(vf->priv->Frame[1]){free(vf->priv->Frame[1]);vf->priv->Frame[1]=NULL;}
-	if(vf->priv->Frame[2]){free(vf->priv->Frame[2]);vf->priv->Frame[2]=NULL;}
+static void uninit(struct vf_instance *vf)
+{
+	free(vf->priv->Line);
+	free(vf->priv->Frame[0]);
+	free(vf->priv->Frame[1]);
+	free(vf->priv->Frame[2]);
+
+	vf->priv->Line     = NULL;
+	vf->priv->Frame[0] = NULL;
+	vf->priv->Frame[1] = NULL;
+	vf->priv->Frame[2] = NULL;
 }
 
 static int config(struct vf_instance *vf,
diff --git a/libmpcodecs/vf_hue.c b/libmpcodecs/vf_hue.c
index 221bee8..47fe19a 100644
--- a/libmpcodecs/vf_hue.c
+++ b/libmpcodecs/vf_hue.c
@@ -158,8 +158,8 @@ static int query_format(struct vf_instance *vf, unsigned int fmt)
 
 static void uninit(struct vf_instance *vf)
 {
-	if (vf->priv->buf[0]) free(vf->priv->buf[0]);
-	if (vf->priv->buf[1]) free(vf->priv->buf[1]);
+	free(vf->priv->buf[0]);
+	free(vf->priv->buf[1]);
 	free(vf->priv);
 }
 
diff --git a/libmpcodecs/vf_lavc.c b/libmpcodecs/vf_lavc.c
index 6c9c74f..f400678 100644
--- a/libmpcodecs/vf_lavc.c
+++ b/libmpcodecs/vf_lavc.c
@@ -69,7 +69,7 @@ static int config(struct vf_instance *vf,
 	}
     }
 
-    if(vf->priv->outbuf) free(vf->priv->outbuf);
+    free(vf->priv->outbuf);
 
     vf->priv->outbuf_size=10000+width*height;  // must be enough!
     vf->priv->outbuf = malloc(vf->priv->outbuf_size);
diff --git a/libmpcodecs/vf_mcdeint.c b/libmpcodecs/vf_mcdeint.c
index 2373ae6..3e6745f 100644
--- a/libmpcodecs/vf_mcdeint.c
+++ b/libmpcodecs/vf_mcdeint.c
@@ -278,9 +278,9 @@ static void uninit(struct vf_instance *vf){
 
 #if 0
     for(i=0; i<3; i++){
-        if(vf->priv->temp[i]) free(vf->priv->temp[i]);
+        free(vf->priv->temp[i]);
         vf->priv->temp[i]= NULL;
-        if(vf->priv->src[i]) free(vf->priv->src[i]);
+        free(vf->priv->src[i]);
         vf->priv->src[i]= NULL;
     }
 #endif
diff --git a/libmpcodecs/vf_noise.c b/libmpcodecs/vf_noise.c
index 525776c..f8d4c2e 100644
--- a/libmpcodecs/vf_noise.c
+++ b/libmpcodecs/vf_noise.c
@@ -370,10 +370,10 @@ static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts){
 static void uninit(struct vf_instance *vf){
 	if(!vf->priv) return;
 
-	if(vf->priv->chromaParam.noise) av_free(vf->priv->chromaParam.noise);
+	av_free(vf->priv->chromaParam.noise);
 	vf->priv->chromaParam.noise= NULL;
 
-	if(vf->priv->lumaParam.noise) av_free(vf->priv->lumaParam.noise);
+	av_free(vf->priv->lumaParam.noise);
 	vf->priv->lumaParam.noise= NULL;
 
 	free(vf->priv);
diff --git a/libmpcodecs/vf_perspective.c b/libmpcodecs/vf_perspective.c
index 21689d1..8c6caca 100644
--- a/libmpcodecs/vf_perspective.c
+++ b/libmpcodecs/vf_perspective.c
@@ -132,7 +132,7 @@ static int config(struct vf_instance *vf,
 static void uninit(struct vf_instance *vf){
 	if(!vf->priv) return;
 
-	if(vf->priv->pv) free(vf->priv->pv);
+	free(vf->priv->pv);
 	vf->priv->pv= NULL;
 
 	free(vf->priv);
diff --git a/libmpcodecs/vf_pp7.c b/libmpcodecs/vf_pp7.c
index 932c3f5..32e9a58 100644
--- a/libmpcodecs/vf_pp7.c
+++ b/libmpcodecs/vf_pp7.c
@@ -410,7 +410,7 @@ static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts){
 static void uninit(struct vf_instance *vf){
     if(!vf->priv) return;
 
-    if(vf->priv->src) free(vf->priv->src);
+    free(vf->priv->src);
     vf->priv->src= NULL;
 
     free(vf->priv);
diff --git a/libmpcodecs/vf_qp.c b/libmpcodecs/vf_qp.c
index 82c5612..b1be8f1 100644
--- a/libmpcodecs/vf_qp.c
+++ b/libmpcodecs/vf_qp.c
@@ -144,7 +144,7 @@ static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts){
 static void uninit(struct vf_instance *vf){
 	if(!vf->priv) return;
 
-	if(vf->priv->qp) av_free(vf->priv->qp);
+	av_free(vf->priv->qp);
 	vf->priv->qp= NULL;
 
 	av_free(vf->priv);
diff --git a/libmpcodecs/vf_sab.c b/libmpcodecs/vf_sab.c
index 0cb4fd9..7dccd21 100644
--- a/libmpcodecs/vf_sab.c
+++ b/libmpcodecs/vf_sab.c
@@ -153,10 +153,10 @@ static void freeBuffers(FilterParam *f){
 	if(f->preFilterContext) sws_freeContext(f->preFilterContext);
 	f->preFilterContext=NULL;
 
-	if(f->preFilterBuf) free(f->preFilterBuf);
+	free(f->preFilterBuf);
 	f->preFilterBuf=NULL;
 
-	if(f->distCoeff) free(f->distCoeff);
+	free(f->distCoeff);
 	f->distCoeff=NULL;
 }
 
diff --git a/libmpcodecs/vf_scale.c b/libmpcodecs/vf_scale.c
index 8c2a40d..940f7d2 100644
--- a/libmpcodecs/vf_scale.c
+++ b/libmpcodecs/vf_scale.c
@@ -302,10 +302,8 @@ static int config(struct vf_instance *vf,
     }
     vf->priv->fmt=best;
 
-    if(vf->priv->palette){
-	free(vf->priv->palette);
-	vf->priv->palette=NULL;
-    }
+    free(vf->priv->palette);
+    vf->priv->palette=NULL;
     switch(best){
     case IMGFMT_RGB8: {
       /* set 332 palette for 8 bpp */
@@ -524,7 +522,7 @@ static int query_format(struct vf_instance *vf, unsigned int fmt){
 static void uninit(struct vf_instance *vf){
     if(vf->priv->ctx) sws_freeContext(vf->priv->ctx);
     if(vf->priv->ctx2) sws_freeContext(vf->priv->ctx2);
-    if(vf->priv->palette) free(vf->priv->palette);
+    free(vf->priv->palette);
     free(vf->priv);
 }
 
diff --git a/libmpcodecs/vf_screenshot.c b/libmpcodecs/vf_screenshot.c
index 3ebcc17..82b345b 100644
--- a/libmpcodecs/vf_screenshot.c
+++ b/libmpcodecs/vf_screenshot.c
@@ -75,7 +75,7 @@ static int config(struct vf_instance *vf,
     vf->priv->dh = d_height;
     vf->priv->stride = (3*vf->priv->dw+15)&~15;
 
-    if (vf->priv->buffer) free(vf->priv->buffer); // probably reconfigured
+    free(vf->priv->buffer); // probably reconfigured
     vf->priv->buffer = NULL;
 
     return vf_next_config(vf,width,height,d_width,d_height,flags,outfmt);
@@ -278,7 +278,7 @@ static void uninit(vf_instance_t *vf)
     avcodec_close(vf->priv->avctx);
     av_freep(&vf->priv->avctx);
     if(vf->priv->ctx) sws_freeContext(vf->priv->ctx);
-    if (vf->priv->buffer) av_free(vf->priv->buffer);
+    av_free(vf->priv->buffer);
     free(vf->priv->outbuffer);
     free(vf->priv);
 }
diff --git a/libmpcodecs/vf_spp.c b/libmpcodecs/vf_spp.c
index ef725b1..9a995c5 100644
--- a/libmpcodecs/vf_spp.c
+++ b/libmpcodecs/vf_spp.c
@@ -520,13 +520,13 @@ static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts){
 static void uninit(struct vf_instance *vf){
 	if(!vf->priv) return;
 
-	if(vf->priv->temp) free(vf->priv->temp);
+	free(vf->priv->temp);
 	vf->priv->temp= NULL;
-	if(vf->priv->src) free(vf->priv->src);
+	free(vf->priv->src);
 	vf->priv->src= NULL;
-        if(vf->priv->avctx) free(vf->priv->avctx);
+        free(vf->priv->avctx);
         vf->priv->avctx= NULL;
-        if(vf->priv->non_b_qp) free(vf->priv->non_b_qp);
+        free(vf->priv->non_b_qp);
         vf->priv->non_b_qp= NULL;
 
 	free(vf->priv);
diff --git a/libmpcodecs/vf_unsharp.c b/libmpcodecs/vf_unsharp.c
index ae5f136..9014a2b 100644
--- a/libmpcodecs/vf_unsharp.c
+++ b/libmpcodecs/vf_unsharp.c
@@ -212,12 +212,12 @@ static void uninit( struct vf_instance *vf ) {
 
     fp = &vf->priv->lumaParam;
     for( z=0; z<sizeof(fp->SC)/sizeof(fp->SC[0]); z++ ) {
-	if( fp->SC[z] ) av_free( fp->SC[z] );
+	av_free( fp->SC[z] );
 	fp->SC[z] = NULL;
     }
     fp = &vf->priv->chromaParam;
     for( z=0; z<sizeof(fp->SC)/sizeof(fp->SC[0]); z++ ) {
-	if( fp->SC[z] ) av_free( fp->SC[z] );
+	av_free( fp->SC[z] );
 	fp->SC[z] = NULL;
     }
 
diff --git a/libmpcodecs/vf_uspp.c b/libmpcodecs/vf_uspp.c
index 2e1e055..6feb8eb 100644
--- a/libmpcodecs/vf_uspp.c
+++ b/libmpcodecs/vf_uspp.c
@@ -303,9 +303,9 @@ static void uninit(struct vf_instance *vf){
     if(!vf->priv) return;
 
     for(i=0; i<3; i++){
-        if(vf->priv->temp[i]) free(vf->priv->temp[i]);
+        free(vf->priv->temp[i]);
         vf->priv->temp[i]= NULL;
-        if(vf->priv->src[i]) free(vf->priv->src[i]);
+        free(vf->priv->src[i]);
         vf->priv->src[i]= NULL;
     }
     for(i=0; i<BLOCK*BLOCK; i++){
diff --git a/libmpdemux/asfheader.c b/libmpdemux/asfheader.c
index 7f8c73b..9dd5f5f 100644
--- a/libmpdemux/asfheader.c
+++ b/libmpdemux/asfheader.c
@@ -710,7 +710,7 @@ return 1;
 len_err_out:
   mp_msg(MSGT_HEADER, MSGL_FATAL, MSGTR_MPDEMUX_ASFHDR_InvalidLengthInASFHeader);
 err_out:
-  if (hdr) free(hdr);
-  if (streams) free(streams);
+  free(hdr);
+  free(streams);
   return 0;
 }
diff --git a/libmpdemux/demux_aac.c b/libmpdemux/demux_aac.c
index 621b58d..192d620 100644
--- a/libmpdemux/demux_aac.c
+++ b/libmpdemux/demux_aac.c
@@ -65,8 +65,7 @@ static void demux_close_aac(demuxer_t *demuxer)
 	if(!priv)
 		return;
 
-	if(priv->buf)
-		free(priv->buf);
+	free(priv->buf);
 
 	free(demuxer->priv);
 
diff --git a/libmpdemux/demux_asf.c b/libmpdemux/demux_asf.c
index 32a2c5b..9e56d59 100644
--- a/libmpdemux/demux_asf.c
+++ b/libmpdemux/demux_asf.c
@@ -672,12 +672,8 @@ static void demux_close_asf(demuxer_t *demuxer) {
 
     if (!asf) return;
 
-    if (asf->aud_repdata_sizes)
-      free(asf->aud_repdata_sizes);
-
-    if (asf->vid_repdata_sizes)
-      free(asf->vid_repdata_sizes);
-
+    free(asf->aud_repdata_sizes);
+    free(asf->vid_repdata_sizes);
     free(asf);
 }
 
diff --git a/libmpdemux/demux_audio.c b/libmpdemux/demux_audio.c
index 39529e8..ca6b51d 100644
--- a/libmpdemux/demux_audio.c
+++ b/libmpdemux/demux_audio.c
@@ -671,8 +671,6 @@ static void demux_audio_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_
 static void demux_close_audio(demuxer_t* demuxer) {
   da_priv_t* priv = demuxer->priv;
 
-  if(!priv)
-    return;
   free(priv);
 }
 
diff --git a/libmpdemux/demux_film.c b/libmpdemux/demux_film.c
index 8f8db9f..84e4ab3 100644
--- a/libmpdemux/demux_film.c
+++ b/libmpdemux/demux_film.c
@@ -458,8 +458,7 @@ static void demux_close_film(demuxer_t* demuxer) {
 
   if(!film_data)
     return;
-  if(film_data->chunks)
-    free(film_data->chunks);
+  free(film_data->chunks);
   free(film_data);
 
 }
diff --git a/libmpdemux/demux_fli.c b/libmpdemux/demux_fli.c
index 4dd134d..9a9d5eb 100644
--- a/libmpdemux/demux_fli.c
+++ b/libmpdemux/demux_fli.c
@@ -191,11 +191,8 @@ static void demux_close_fli(demuxer_t* demuxer) {
   if(!frames)
     return;
 
-  if(frames->filepos)
-    free(frames->filepos);
-  if(frames->frame_size)
-    free(frames->frame_size);
-
+  free(frames->filepos);
+  free(frames->frame_size);
   free(frames);
 
 }
diff --git a/libmpdemux/demux_mf.c b/libmpdemux/demux_mf.c
index ba603e2..ac63f48 100644
--- a/libmpdemux/demux_mf.c
+++ b/libmpdemux/demux_mf.c
@@ -180,8 +180,6 @@ static demuxer_t* demux_open_mf(demuxer_t* demuxer){
 static void demux_close_mf(demuxer_t* demuxer) {
   mf_t *mf = demuxer->priv;
 
-  if(!mf)
-    return;
   free(mf);
 }
 
diff --git a/libmpdemux/demux_mng.c b/libmpdemux/demux_mng.c
index 0eb9944..07da436 100644
--- a/libmpdemux/demux_mng.c
+++ b/libmpdemux/demux_mng.c
@@ -476,8 +476,7 @@ static void demux_mng_close(demuxer_t* demuxer)
             mng_cleanup(&mng_priv->h_mng);
 
         // free private data
-        if (mng_priv->canvas)
-            free(mng_priv->canvas);
+        free(mng_priv->canvas);
 
         free(mng_priv);
     }
diff --git a/libmpdemux/demux_mpc.c b/libmpdemux/demux_mpc.c
index e9bde98..d17e6bd 100644
--- a/libmpdemux/demux_mpc.c
+++ b/libmpdemux/demux_mpc.c
@@ -199,8 +199,6 @@ static void demux_mpc_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_de
 static void demux_close_mpc(demuxer_t* demuxer) {
   da_priv_t* priv = demuxer->priv;
 
-  if(!priv)
-    return;
   free(priv);
 }
 
diff --git a/libmpdemux/demux_mpg.c b/libmpdemux/demux_mpg.c
index 849ee09..cb5d263 100644
--- a/libmpdemux/demux_mpg.c
+++ b/libmpdemux/demux_mpg.c
@@ -248,7 +248,7 @@ static demuxer_t* demux_mpg_open(demuxer_t* demuxer) {
 
 static void demux_close_mpg(demuxer_t* demuxer) {
   mpg_demuxer_t* mpg_d = demuxer->priv;
-  if (mpg_d) free(mpg_d);
+  free(mpg_d);
 }
 
 
diff --git a/libmpdemux/demux_nsv.c b/libmpdemux/demux_nsv.c
index 4997dae..11be4cb 100644
--- a/libmpdemux/demux_nsv.c
+++ b/libmpdemux/demux_nsv.c
@@ -323,8 +323,6 @@ static int nsv_check_file ( demuxer_t* demuxer )
 static void demux_close_nsv(demuxer_t* demuxer) {
     nsv_priv_t* priv = demuxer->priv;
 
-    if(!priv)
-        return;
     free(priv);
 
 }
diff --git a/libmpdemux/demux_ogg.c b/libmpdemux/demux_ogg.c
index 34ba0dd..561ed85 100644
--- a/libmpdemux/demux_ogg.c
+++ b/libmpdemux/demux_ogg.c
@@ -437,11 +437,10 @@ static void demux_ogg_check_comments(demuxer_t *d, ogg_stream_t *os,
                 sh_sub_t *sh;
 
                 // in case of malicious files with more than one lang per track:
-                if (ogg_d->text_langs[index])
-                    free(ogg_d->text_langs[index]);
+                free(ogg_d->text_langs[index]);
                 ogg_d->text_langs[index] = strdup(val);
                 sh = d->s_streams[index];
-                if (sh && sh->lang)
+                if (sh)
                     free(sh->lang);
                 if (sh)
                     sh->lang = strdup(val);
@@ -1605,13 +1604,11 @@ static void demux_close_ogg(demuxer_t *demuxer)
         }
         free(ogg_d->subs);
     }
-    if (ogg_d->syncpoints)
-        free(ogg_d->syncpoints);
-    if (ogg_d->text_ids)
-        free(ogg_d->text_ids);
+    free(ogg_d->syncpoints);
+    free(ogg_d->text_ids);
     if (ogg_d->text_langs) {
         for (i = 0; i < ogg_d->n_text; i++)
-            if (ogg_d->text_langs[i]) free(ogg_d->text_langs[i]);
+            free(ogg_d->text_langs[i]);
         free(ogg_d->text_langs);
     }
     free(ogg_d);
diff --git a/libmpdemux/demux_pva.c b/libmpdemux/demux_pva.c
index 2b5b757..94f9a46 100644
--- a/libmpdemux/demux_pva.c
+++ b/libmpdemux/demux_pva.c
@@ -516,11 +516,8 @@ static void demux_seek_pva(demuxer_t * demuxer,float rel_seek_secs,float audio_d
 
 static void demux_close_pva(demuxer_t * demuxer)
 {
-	if(demuxer->priv)
-	{
-		free(demuxer->priv);
-		demuxer->priv=NULL;
-	}
+	free(demuxer->priv);
+	demuxer->priv = NULL;
 }
 
 
diff --git a/libmpdemux/demux_real.c b/libmpdemux/demux_real.c
index 1b57789..92abead 100644
--- a/libmpdemux/demux_real.c
+++ b/libmpdemux/demux_real.c
@@ -1626,8 +1626,7 @@ skip_this_chunk:
 #else
 		stream_skip(demuxer->stream, codec_data_size - tmp);
 #endif
-		if (mimet)
-		    free (mimet);
+		free (mimet);
 		break;
 //	    }
 	    }
@@ -1764,12 +1763,9 @@ static void demux_close_real(demuxer_t *demuxer)
 
     if (priv){
     	for(i=0; i<MAX_STREAMS; i++)
-	    if(priv->index_table[i])
-	        free(priv->index_table[i]);
-    if (priv->audio_buf)
-        free(priv->audio_buf);
-    if (priv->audio_timestamp)
-        free(priv->audio_timestamp);
+	    free(priv->index_table[i]);
+	free(priv->audio_buf);
+	free(priv->audio_timestamp);
 	free(priv);
     }
 
diff --git a/libmpdemux/demux_realaud.c b/libmpdemux/demux_realaud.c
index a157075..82d79b2 100644
--- a/libmpdemux/demux_realaud.c
+++ b/libmpdemux/demux_realaud.c
@@ -334,14 +334,12 @@ static demuxer_t* demux_open_ra(demuxer_t* demuxer)
 
 static void demux_close_ra(demuxer_t *demuxer)
 {
-	ra_priv_t* ra_priv = demuxer->priv;
+    ra_priv_t* ra_priv = demuxer->priv;
 
     if (ra_priv) {
-	    if (ra_priv->audio_buf)
-	        free (ra_priv->audio_buf);
-		free(ra_priv);
+        free(ra_priv->audio_buf);
+        free(ra_priv);
     }
-	return;
 }
 
 
diff --git a/libmpdemux/demux_roq.c b/libmpdemux/demux_roq.c
index 3831f57..821fc81 100644
--- a/libmpdemux/demux_roq.c
+++ b/libmpdemux/demux_roq.c
@@ -260,8 +260,6 @@ static demuxer_t* demux_open_roq(demuxer_t* demuxer)
 static void demux_close_roq(demuxer_t* demuxer) {
   roq_data_t *roq_data = demuxer->priv;
 
-  if(!roq_data)
-    return;
   free(roq_data);
 }
 
diff --git a/libmpdemux/demux_rtp_codec.cpp b/libmpdemux/demux_rtp_codec.cpp
index 7ffad24..451f736 100644
--- a/libmpdemux/demux_rtp_codec.cpp
+++ b/libmpdemux/demux_rtp_codec.cpp
@@ -70,7 +70,7 @@ static unsigned char* parseH264ConfigStr( char const* configStr,
 
     psz += strlen(psz)+1;
     }
-    if( dup ) free( dup );
+    free( dup );
 
     return cfg;
 }
diff --git a/libmpdemux/demux_ts.c b/libmpdemux/demux_ts.c
index 25c9493..6cfe728 100644
--- a/libmpdemux/demux_ts.c
+++ b/libmpdemux/demux_ts.c
@@ -1100,19 +1100,15 @@ static void demux_close_ts(demuxer_t * demuxer)
 
 	if(priv)
 	{
-		if(priv->pat.section.buffer)
-			free(priv->pat.section.buffer);
-		if(priv->pat.progs)
-			free(priv->pat.progs);
+		free(priv->pat.section.buffer);
+		free(priv->pat.progs);
 
 		if(priv->pmt)
 		{
 			for(i = 0; i < priv->pmt_cnt; i++)
 			{
-				if(priv->pmt[i].section.buffer)
-					free(priv->pmt[i].section.buffer);
-				if(priv->pmt[i].es)
-					free(priv->pmt[i].es);
+				free(priv->pmt[i].section.buffer);
+				free(priv->pmt[i].es);
 			}
 			free(priv->pmt);
 		}
diff --git a/libmpdemux/demux_viv.c b/libmpdemux/demux_viv.c
index 5e98916..2091e77 100644
--- a/libmpdemux/demux_viv.c
+++ b/libmpdemux/demux_viv.c
@@ -232,12 +232,9 @@ static void vivo_parse_text_header(demuxer_t *demux, int header_len)
 	token = strtok(NULL, (char *)&("\x0d\x0a"));
     }
 
-    if (buf)
-	free(buf);
-    if (opt)
-	free(opt);
-    if (param)
-	free(param);
+    free(buf);
+    free(opt);
+    free(param);
 }
 
 static int vivo_check_file(demuxer_t* demuxer){
@@ -745,14 +742,10 @@ static void demux_close_vivo(demuxer_t *demuxer)
     vivo_priv_t* priv=demuxer->priv;
 
     if (priv) {
-	if (priv->title)
-	    free(priv->title);
-        if (priv->author)
-	    free(priv->author);
-	if (priv->copyright)
-	    free(priv->copyright);
-	if (priv->producer)
-	   free(priv->producer);
+	free(priv->title);
+	free(priv->author);
+	free(priv->copyright);
+	free(priv->producer);
 	free(priv);
     }
     return;
diff --git a/libmpdemux/demuxer.h b/libmpdemux/demuxer.h
index 69280e1..0e72de1 100644
--- a/libmpdemux/demuxer.h
+++ b/libmpdemux/demuxer.h
@@ -307,7 +307,7 @@ static inline void resize_demux_packet(demux_packet_t* dp, int len)
   }
   else
   {
-     if(dp->buffer) free(dp->buffer);
+     free(dp->buffer);
      dp->buffer=NULL;
   }
   dp->len=len;
@@ -332,7 +332,7 @@ static inline void free_demux_packet(demux_packet_t* dp){
   if (dp->master==NULL){  //dp is a master packet
     dp->refcount--;
     if (dp->refcount==0){
-      if (dp->buffer) free(dp->buffer);
+      free(dp->buffer);
       free(dp);
     }
     return;
diff --git a/libmpdemux/muxer_mpeg.c b/libmpdemux/muxer_mpeg.c
index b12cea7..733c297 100644
--- a/libmpdemux/muxer_mpeg.c
+++ b/libmpdemux/muxer_mpeg.c
@@ -496,14 +496,11 @@ init_fail:
     if(s->priv)
     {
       spriv = s->priv;
-      if(spriv->pack)
-        free(spriv->pack);
-      if(spriv->buffer_track)
-        free(spriv->buffer_track);
+      free(spriv->pack);
+      free(spriv->buffer_track);
       free(s->priv);
     }
-    if(s->b_buffer)
-      free(s->b_buffer);
+    free(s->b_buffer);
     free(s);
   }
   return NULL;
diff --git a/libvo/gl_common.c b/libvo/gl_common.c
index 7f3d3bc..116cebb 100644
--- a/libvo/gl_common.c
+++ b/libvo/gl_common.c
@@ -1143,8 +1143,7 @@ static void create_conv_textures(gl_conversion_params_t *params, int *texu, char
     default:
       mp_msg(MSGT_VO, MSGL_ERR, "[gl] unknown conversion type %i\n", conv);
   }
-  if (lookup_data)
-    free(lookup_data);
+  free(lookup_data);
 }
 
 /**
diff --git a/libvo/video_out.c b/libvo/video_out.c
index b6b7cf6..83f2a24 100644
--- a/libvo/video_out.c
+++ b/libvo/video_out.c
@@ -546,8 +546,7 @@ range_t *str2range(char *s)
 	r[i].min = r[i].max = -1;
 	return r;
 out_err:
-	if (r)
-		free(r);
+	free(r);
 	return NULL;
 }
 
diff --git a/libvo/vo_aa.c b/libvo/vo_aa.c
index 56701b5..36156e9 100644
--- a/libvo/vo_aa.c
+++ b/libvo/vo_aa.c
@@ -648,17 +648,16 @@ static int parse_suboptions(const char *arg) {
         if (subcolor) aaopt_subcolor = getcolor(subcolor);
     }
 
-    if (subopts) free(subopts);
-    if (booleans) free(booleans);
+    free(subopts);
+    free(booleans);
     if (strings) {
         for (i=0; i<nstrings; i++)
-            if (strings[i])
-                free(strings[i]);
+            free(strings[i]);
         free(strings);
     }
-    if (osdcolor) free(osdcolor);
-    if (subcolor) free(subcolor);
-    if (helpmsg) free(helpmsg);
+    free(osdcolor);
+    free(subcolor);
+    free(helpmsg);
     return retval;
 }
 
diff --git a/libvo/vo_corevideo.m b/libvo/vo_corevideo.m
index 162edd6..27d55b6 100644
--- a/libvo/vo_corevideo.m
+++ b/libvo/vo_corevideo.m
@@ -345,7 +345,7 @@ static void uninit(void)
         [finalPool release];
     }
 
-    if (buffer_name) free(buffer_name);
+    free(buffer_name);
     buffer_name = NULL;
 }
 
diff --git a/libvo/vo_cvidix.c b/libvo/vo_cvidix.c
index bb68000..e587fd2 100644
--- a/libvo/vo_cvidix.c
+++ b/libvo/vo_cvidix.c
@@ -150,10 +150,8 @@ static int query_format(uint32_t format){
 static void uninit(void){
   if(!vo_config_count) return;
   vidix_term();
-  if(vidix_name){
-    free(vidix_name);
-	vidix_name = NULL;
-  }
+  free(vidix_name);
+  vidix_name = NULL;
 }
 
 static int preinit(const char *arg){
diff --git a/libvo/vo_directx.c b/libvo/vo_directx.c
index f39df87..35bb8e3 100644
--- a/libvo/vo_directx.c
+++ b/libvo/vo_directx.c
@@ -1182,8 +1182,7 @@ static void flip_page(void)
 	        mp_msg(MSGT_VO,MSGL_WARN,"<vo_directx><WARN>stride changed !!!! disabling direct rendering\n");
 	        vo_directrendering=0;
 	    }
-	    if (tmp_image)
-		    free(tmp_image);
+	    free(tmp_image);
 	    tmp_image = NULL;
 	    dstride = ddsdsf.lPitch;
 	    image = ddsdsf.lpSurface;
diff --git a/libvo/vo_dxr2.c b/libvo/vo_dxr2.c
index 1dad866..ece2b1b 100644
--- a/libvo/vo_dxr2.c
+++ b/libvo/vo_dxr2.c
@@ -789,10 +789,8 @@ static void uninit(void)
     close(dxr2_fd);
     dxr2_fd = -1;
   }
-  if(sub_img) {
-    free(sub_img);
-    sub_img = NULL;
-  }
+  free(sub_img);
+  sub_img = NULL;
   if(sub_vo) {
     int cc = vo_config_count;
     vo_config_count = sub_config_count;
diff --git a/libvo/vo_dxr3.c b/libvo/vo_dxr3.c
index e5154e6..5c658a8 100644
--- a/libvo/vo_dxr3.c
+++ b/libvo/vo_dxr3.c
@@ -715,12 +715,8 @@ static void uninit(void)
 		close(fd_control);
 	}
 #ifdef SPU_SUPPORT
-	if(osdpicbuf) {
-		free(osdpicbuf);
-	}
-	if(spued) {
-		free(spued);
-	}
+	free(osdpicbuf);
+	free(spued);
 #endif
 }
 
@@ -935,9 +931,7 @@ static overlay_t *overlay_init(int dev)
 
 static int overlay_release(overlay_t *o)
 {
-    if(o)
-	free(o);
-
+    free(o);
     return 0;
 }
 #define TYPE_INT 1
diff --git a/libvo/vo_fbdev.c b/libvo/vo_fbdev.c
index a30d4f1..48c3dd2 100644
--- a/libvo/vo_fbdev.c
+++ b/libvo/vo_fbdev.c
@@ -365,10 +365,8 @@ err_out_parse_error:
 err_out_print_linenum:
     mp_msg(MSGT_VO, MSGL_V, " at line %d\n", line_num);
 err_out:
-    if (fb_modes) {
-        free(fb_modes);
-        fb_modes = NULL;
-    }
+    free(fb_modes);
+    fb_modes = NULL;
     nr_modes = 0;
     free(line);
     free(fp);
@@ -1119,8 +1117,7 @@ static int preinit(const char *vo_subdevice)
         else
 #endif
         {
-            if (fb_dev_name)
-                free(fb_dev_name);
+            free(fb_dev_name);
             fb_dev_name = strdup(vo_subdevice);
         }
     }
diff --git a/libvo/vo_fbdev2.c b/libvo/vo_fbdev2.c
index cbe8d5a..da73d41 100644
--- a/libvo/vo_fbdev2.c
+++ b/libvo/vo_fbdev2.c
@@ -220,7 +220,7 @@ static int preinit(const char *subdevice)
 {
 	if (subdevice)
 	{
-	    if (fb_dev_name) free(fb_dev_name);
+	    free(fb_dev_name);
 	    fb_dev_name = strdup(subdevice);
 	}
 	return fb_preinit(0);
@@ -413,7 +413,7 @@ static void uninit(void)
 			mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] Can't restore original cmap\n");
 		fb_cmap_changed = 0;
 	}
-	if(next_frame) free(next_frame);
+	free(next_frame);
 	if (fb_dev_fd >= 0) {
 		if (ioctl(fb_dev_fd, FBIOPUT_VSCREENINFO, &fb_orig_vinfo))
 			mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] Can't reset original fb_var_screeninfo: %s\n", strerror(errno));
diff --git a/libvo/vo_ggi.c b/libvo/vo_ggi.c
index 645bed2..d361d0e 100644
--- a/libvo/vo_ggi.c
+++ b/libvo/vo_ggi.c
@@ -453,8 +453,7 @@ static int preinit(const char *arg)
 
 static void uninit(void)
 {
-    if (ggi_conf.driver)
-        free(ggi_conf.driver);
+    free(ggi_conf.driver);
 
 #ifdef CONFIG_GGIWMH
     ggiWmhDetach(ggi_conf.vis);
diff --git a/libvo/vo_gif89a.c b/libvo/vo_gif89a.c
index e2cf2a4..f21e1cf 100644
--- a/libvo/vo_gif89a.c
+++ b/libvo/vo_gif89a.c
@@ -362,9 +362,9 @@ static void uninit(void)
 	}
 
 	// free our allocated ram
-	if (gif_filename != NULL) free(gif_filename);
-	if (slice_data != NULL) free(slice_data);
-	if (reduce_data != NULL) free(reduce_data);
+	free(gif_filename);
+	free(slice_data);
+	free(reduce_data);
 	if (reduce_cmap != NULL) FreeMapObject(reduce_cmap);
 
 	// set the pointers back to null.
diff --git a/libvo/vo_gl.c b/libvo/vo_gl.c
index 62c2fe2..445ce77 100644
--- a/libvo/vo_gl.c
+++ b/libvo/vo_gl.c
@@ -1097,9 +1097,9 @@ static void
 uninit(void)
 {
   uninitGl();
-  if (custom_prog) free(custom_prog);
+  free(custom_prog);
   custom_prog = NULL;
-  if (custom_tex) free(custom_tex);
+  free(custom_tex);
   custom_tex = NULL;
   uninit_mpglcontext(&glctx);
 }
diff --git a/libvo/vo_gl2.c b/libvo/vo_gl2.c
index 51f0ae5..4e1dcb7 100644
--- a/libvo/vo_gl2.c
+++ b/libvo/vo_gl2.c
@@ -236,8 +236,7 @@ static int initTextures(void)
   texpercx = (GLfloat) texture_width / (GLfloat) image_width;
   texpercy = (GLfloat) texture_height / (GLfloat) image_height;
 
-  if (texgrid)
-    free(texgrid);
+  free(texgrid);
   texgrid = calloc (texnumx * texnumy, sizeof (struct TexSquare));
 
   raw_line_len = image_width * image_bytes;
@@ -828,10 +827,8 @@ static void
 uninit(void)
 {
   if ( !vo_config_count ) return;
-  if (texgrid) {
-    free(texgrid);
-    texgrid = NULL;
-  }
+  free(texgrid);
+  texgrid = NULL;
   uninit_mpglcontext(&glctx);
 }
 
diff --git a/libvo/vo_jpeg.c b/libvo/vo_jpeg.c
index 70c6425..95c9ff6 100644
--- a/libvo/vo_jpeg.c
+++ b/libvo/vo_jpeg.c
@@ -309,14 +309,10 @@ static int query_format(uint32_t format)
 
 static void uninit(void)
 {
-    if (jpeg_subdirs) {
-        free(jpeg_subdirs);
-        jpeg_subdirs = NULL;
-    }
-    if (jpeg_outdir) {
-        free(jpeg_outdir);
-        jpeg_outdir = NULL;
-    }
+    free(jpeg_subdirs);
+    jpeg_subdirs = NULL;
+    free(jpeg_outdir);
+    jpeg_outdir = NULL;
 }
 
 /* ------------------------------------------------------------------------- */
diff --git a/libvo/vo_md5sum.c b/libvo/vo_md5sum.c
index 698c50e..74b71b5 100644
--- a/libvo/vo_md5sum.c
+++ b/libvo/vo_md5sum.c
@@ -281,10 +281,8 @@ static int control(uint32_t request, void *data, ...)
 
 static void uninit(void)
 {
-    if (md5sum_outfile) {
-        free(md5sum_outfile);
-        md5sum_outfile = NULL;
-    }
+    free(md5sum_outfile);
+    md5sum_outfile = NULL;
     if (md5sum_fd) fclose(md5sum_fd);
 }
 
diff --git a/libvo/vo_png.c b/libvo/vo_png.c
index 5b558b3..eed7f94 100644
--- a/libvo/vo_png.c
+++ b/libvo/vo_png.c
@@ -199,10 +199,8 @@ static void uninit(void){
     av_freep(&avctx);
     av_freep(&outbuffer);
     outbuffer_size = 0;
-    if (png_outdir) {
-        free(png_outdir);
-        png_outdir = NULL;
-    }
+    free(png_outdir);
+    png_outdir = NULL;
 }
 
 static void check_events(void){}
diff --git a/libvo/vo_pnm.c b/libvo/vo_pnm.c
index 03d9512..268c4f6 100644
--- a/libvo/vo_pnm.c
+++ b/libvo/vo_pnm.c
@@ -557,14 +557,10 @@ static int control(uint32_t request, void *data, ...)
 
 static void uninit(void)
 {
-    if (pnm_subdirs) {
-        free(pnm_subdirs);
-        pnm_subdirs = NULL;
-    }
-    if (pnm_outdir) {
-        free(pnm_outdir);
-        pnm_outdir = NULL;
-    }
+    free(pnm_subdirs);
+    pnm_subdirs = NULL;
+    free(pnm_outdir);
+    pnm_outdir = NULL;
 }
 
 /* ------------------------------------------------------------------------- */
diff --git a/libvo/vo_winvidix.c b/libvo/vo_winvidix.c
index c448fb2..f5261a0 100644
--- a/libvo/vo_winvidix.c
+++ b/libvo/vo_winvidix.c
@@ -311,11 +311,8 @@ static void uninit(void){
     if ( !vo_config_count ) return;
     vidix_term();
 
-    if (vidix_name){
-	free(vidix_name);
-	vidix_name = NULL;
-    }
-    //
+    free(vidix_name);
+    vidix_name = NULL;
 }
 
 static int preinit(const char *arg){
diff --git a/libvo/vo_xvidix.c b/libvo/vo_xvidix.c
index 25b6020..088aa54 100644
--- a/libvo/vo_xvidix.c
+++ b/libvo/vo_xvidix.c
@@ -362,11 +362,8 @@ static void uninit(void)
         return;
     vidix_term();
 
-    if (vidix_name)
-    {
-        free(vidix_name);
-        vidix_name = NULL;
-    }
+    free(vidix_name);
+    vidix_name = NULL;
 
     vo_x11_uninit();
 }
diff --git a/libvo/vo_yuv4mpeg.c b/libvo/vo_yuv4mpeg.c
index c0fd5ac..380fb35 100644
--- a/libvo/vo_yuv4mpeg.c
+++ b/libvo/vo_yuv4mpeg.c
@@ -235,16 +235,14 @@ static int query_format(uint32_t format)
 // WARNING: config(...) also uses this
 static void uninit(void)
 {
-    if(image)
-		free(image);
+	free(image);
 	image = NULL;
 
 	if(yuv_out)
 		fclose(yuv_out);
 	yuv_out = NULL;
 
-	if (yuv_filename)
-		free(yuv_filename);
+	free(yuv_filename);
 	yuv_filename = NULL;
 	image_width = 0;
 	image_height = 0;
diff --git a/libvo/vo_zr.c b/libvo/vo_zr.c
index af9cc9b..cdf8a06 100644
--- a/libvo/vo_zr.c
+++ b/libvo/vo_zr.c
@@ -268,10 +268,8 @@ static int init_zoran(zr_info_t *zr, int stretchx, int stretchy)
 
 static void uninit_zoran(zr_info_t *zr)
 {
-	if (zr->image) {
-		free(zr->image);
-		zr->image=NULL;
-	}
+	free(zr->image);
+	zr->image=NULL;
 	while (zr->queue > zr->synco + 1) {
 		if (ioctl(zr->vdes, MJPIOC_SYNC, &zr->zs) < 0)
 			mp_msg(MSGT_VO, MSGL_ERR, "zr: error waiting for buffers to become free\n");
@@ -800,8 +798,7 @@ void vo_zr_revertoption(const m_option_t* opt,const char* param) {
   zr_parsing = 0;
 
   if (!strcasecmp(param, "zrdev")) {
-    if(zr->device)
-      free(zr->device);
+    free(zr->device);
     zr->device=NULL;
   } else if (!strcasecmp(param, "zrbw"))
     zr->bw=0;
diff --git a/loader/afl.c b/loader/afl.c
index a138a7e..337cbcd 100644
--- a/loader/afl.c
+++ b/loader/afl.c
@@ -310,8 +310,7 @@ PWINE_ACMDRIVERID MSACM_UnregisterDriver(PWINE_ACMDRIVERID p)
     while (p->pACMDriverList)
 	acmDriverClose((HACMDRIVER) p->pACMDriverList, 0);
 
-    if (p->pszFileName)
-	free(p->pszFileName);
+    free(p->pszFileName);
 
     if (p == MSACM_pFirstACMDriverID)
 	MSACM_pFirstACMDriverID = p->pNextACMDriverID;
diff --git a/loader/dshow/cmediasample.c b/loader/dshow/cmediasample.c
index efa3ef8..3b7e45b 100644
--- a/loader/dshow/cmediasample.c
+++ b/loader/dshow/cmediasample.c
@@ -351,7 +351,7 @@ static HRESULT STDCALL CMediaSample_GetMediaType(IMediaSample* This,
     }
 
     t = &((CMediaSample*)This)->media_type;
-    //    if(t.pbFormat)free(t.pbFormat);
+    //    free(t.pbFormat);
     *ppMediaType=CreateMediaType(t);
     //    *ppMediaType=0; //media type was not changed
     return 0;
diff --git a/loader/dshow/inputpin.c b/loader/dshow/inputpin.c
index 3227339..f3ca4ba 100644
--- a/loader/dshow/inputpin.c
+++ b/loader/dshow/inputpin.c
@@ -857,8 +857,7 @@ static IPin* CBaseFilter_GetUnusedPin(CBaseFilter* This)
  */
 static void CBaseFilter_Destroy(CBaseFilter* This)
 {
-    if (This->vt)
-	free(This->vt);
+    free(This->vt);
     if (This->pin)
 	This->pin->vt->Release((IUnknown*)This->pin);
     if (This->unused_pin)
@@ -1190,8 +1189,7 @@ static void CBaseFilter2_Destroy(CBaseFilter2* This)
     Debug printf("CBaseFilter2_Destroy(%p) called\n", This);
     if (This->pin)
 	This->pin->vt->Release((IUnknown*) This->pin);
-    if (This->vt)
-	free(This->vt);
+    free(This->vt);
     free(This);
 }
 
diff --git a/loader/dshow/outputpin.c b/loader/dshow/outputpin.c
index c24c29e..ad53303 100644
--- a/loader/dshow/outputpin.c
+++ b/loader/dshow/outputpin.c
@@ -792,12 +792,9 @@ static void COutputPin_SetNewFormat(COutputPin* This, const AM_MEDIA_TYPE* amt)
  */
 static void COutputPin_Destroy(COutputPin* This)
 {
-    if (This->mempin->vt)
-	free(This->mempin->vt);
-    if (This->mempin)
-	free(This->mempin);
-    if (This->vt)
-	free(This->vt);
+    free(This->mempin->vt);
+    free(This->mempin);
+    free(This->vt);
     FreeMediaType(&(This->type));
     free(This);
 }
diff --git a/loader/ext.c b/loader/ext.c
index 26b6a5a..d91ab4a 100644
--- a/loader/ext.c
+++ b/loader/ext.c
@@ -93,7 +93,7 @@ LPVOID WINAPI HeapAlloc(HANDLE heap, DWORD flags, DWORD size)
 
 WIN_BOOL WINAPI HeapFree(HANDLE heap, DWORD flags, LPVOID mem)
 {
-    if (mem) free(mem);
+    free(mem);
     //printf("HeapFree  %p\n", mem);
     //if (!mem)
     //    abort();
@@ -409,8 +409,7 @@ WIN_BOOL WINAPI UnmapViewOfFile(LPVOID handle)
 	    result=munmap((void*)handle, p->mapping_size);
 	    if(p->next)p->next->prev=p->prev;
 	    if(p->prev)p->prev->next=p->next;
-	    if(p->name)
-		free(p->name);
+	    free(p->name);
 	    if(p==fm)
 		fm=p->prev;
 	    free(p);
diff --git a/loader/ldt_keeper.c b/loader/ldt_keeper.c
index 92a7df8..73c5c23 100644
--- a/loader/ldt_keeper.c
+++ b/loader/ldt_keeper.c
@@ -272,8 +272,7 @@ void Restore_LDT_Keeper(ldt_fs_t* ldt_fs)
 {
     if (ldt_fs == NULL || ldt_fs->fs_seg == 0)
 	return;
-    if (ldt_fs->prev_struct)
-	free(ldt_fs->prev_struct);
+    free(ldt_fs->prev_struct);
     munmap((char*)ldt_fs->fs_seg, getpagesize());
     ldt_fs->fs_seg = 0;
     free(ldt_fs);
diff --git a/loader/pe_image.c b/loader/pe_image.c
index b13dfd0..85b56ab 100644
--- a/loader/pe_image.c
+++ b/loader/pe_image.c
@@ -868,10 +868,8 @@ void PE_UnloadLibrary(WINE_MODREF *wm)
 {
     TRACE(" unloading %s\n", wm->filename);
 
-    if (wm->filename)
-	free(wm->filename);
-    if (wm->short_filename)
-	free(wm->short_filename);
+    free(wm->filename);
+    free(wm->short_filename);
     HeapFree( GetProcessHeap(), 0, wm->deps );
     VirtualFree( (LPVOID)wm->module, 0, MEM_RELEASE );
     HeapFree( GetProcessHeap(), 0, wm );
diff --git a/loader/registry.c b/loader/registry.c
index 4a41911..2eb4491 100644
--- a/loader/registry.c
+++ b/loader/registry.c
@@ -158,8 +158,7 @@ void free_registry(void)
     while (t)
     {
 	reg_handle_t* f = t;
-        if (t->name)
-	    free(t->name);
+	free(t->name);
 	t=t->prev;
         free(f);
     }
@@ -380,8 +379,7 @@ long __stdcall RegCloseKey(long key)
 	handle->prev->next=handle->next;
     if(handle->next)
 	handle->next->prev=handle->prev;
-    if(handle->name)
-	free(handle->name);
+    free(handle->name);
     if(handle==head)
 	head=head->prev;
     free(handle);
diff --git a/mplayer.c b/mplayer.c
index e03bfe4..f48bb3e 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -1152,8 +1152,7 @@ void update_set_of_subtitles(void)
 }
 
 void init_vo_spudec(void) {
-  if (vo_spudec)
-    spudec_free(vo_spudec);
+  spudec_free(vo_spudec);
   vo_spudec = NULL;
 
   // we currently can't work without video stream
diff --git a/osdep/macosx_finder_args.c b/osdep/macosx_finder_args.c
index cbd88ad..d6edcbc 100644
--- a/osdep/macosx_finder_args.c
+++ b/osdep/macosx_finder_args.c
@@ -91,8 +91,7 @@ long itemsInList;
 				}
 			}
 
-			if(parm)
-				free(parm);
+			free(parm);
 
 			err=noErr;
 		}
diff --git a/stream/freesdp/parser.c b/stream/freesdp/parser.c
index 6d806a6..0774ce8 100644
--- a/stream/freesdp/parser.c
+++ b/stream/freesdp/parser.c
@@ -471,8 +471,7 @@ fsdp_parse (const char *text_description, fsdp_description_t * dsc)
       }
       else if (!strncmp (fsdp_buf[0], "range", 5))
       {
-        if (dsc->a_range)
-          free (dsc->a_range);
+        free (dsc->a_range);
         dsc->a_range = strdup (fsdp_buf[1]);
       }
       else
@@ -770,8 +769,7 @@ fsdp_parse (const char *text_description, fsdp_description_t * dsc)
           }
           else if (!strncmp (fsdp_buf[0], "range", 5))
           {
-            if (media->a_range)
-              free (media->a_range);
+            free (media->a_range);
             media->a_range = strdup (fsdp_buf[1]);
           }
           else if (!strncmp (fsdp_buf[0], "framerate", 9))
diff --git a/stream/librtsp/rtsp.c b/stream/librtsp/rtsp.c
index 8266961..e02ae4c 100644
--- a/stream/librtsp/rtsp.c
+++ b/stream/librtsp/rtsp.c
@@ -291,7 +291,7 @@ static int rtsp_get_answers(rtsp_t *s) {
     if (!strncasecmp(answer,"Server:",7)) {
       char *buf = malloc(strlen(answer));
       sscanf(answer,"%*s %s",buf);
-      if (s->server) free(s->server);
+      free(s->server);
       s->server=strdup(buf);
       free(buf);
     }
@@ -612,7 +612,7 @@ char *rtsp_search_answers(rtsp_t *s, const char *tag) {
 
 void rtsp_set_session(rtsp_t *s, const char *id) {
 
-  if (s->session) free(s->session);
+  free(s->session);
 
   s->session=strdup(id);
 
@@ -686,7 +686,7 @@ void rtsp_unschedule_field(rtsp_t *s, const char *string) {
     else
       ptr++;
   }
-  if (*ptr) free(*ptr);
+  free(*ptr);
   ptr++;
   do {
     *(ptr-1)=*ptr;
diff --git a/stream/librtsp/rtsp_rtp.c b/stream/librtsp/rtsp_rtp.c
index b0c36a9..ca82209 100644
--- a/stream/librtsp/rtsp_rtp.c
+++ b/stream/librtsp/rtsp_rtp.c
@@ -131,8 +131,7 @@ rtp_session_free (struct rtp_rtsp_session_t *st)
   if (st->rtcp_socket != -1)
     close (st->rtcp_socket);
 
-  if (st->control_url)
-    free (st->control_url);
+  free (st->control_url);
   free (st);
 }
 
diff --git a/stream/librtsp/rtsp_session.c b/stream/librtsp/rtsp_session.c
index b1176db..6257272 100644
--- a/stream/librtsp/rtsp_session.c
+++ b/stream/librtsp/rtsp_session.c
@@ -89,11 +89,11 @@ static void rtsp_close(rtsp_t *s) {
     closesocket (s->s);
   }
 
-  if (s->path) free(s->path);
-  if (s->host) free(s->host);
-  if (s->mrl) free(s->mrl);
-  if (s->session) free(s->session);
-  if (s->user_agent) free(s->user_agent);
+  free(s->path);
+  free(s->host);
+  free(s->mrl);
+  free(s->session);
+  free(s->user_agent);
   free(s->server);
   rtsp_free_answers(s);
   rtsp_unschedule_all(s);
diff --git a/stream/realrtsp/real.c b/stream/realrtsp/real.c
index 0206833..d4908c5 100644
--- a/stream/realrtsp/real.c
+++ b/stream/realrtsp/real.c
@@ -507,8 +507,7 @@ rtsp_send_describe:
   }
 autherr:
 
-  if (authfield)
-     free(authfield);
+  free(authfield);
 
   if ( status<200 || status>299 )
   {
diff --git a/stream/realrtsp/rmff.c b/stream/realrtsp/rmff.c
index 3221df9..eebb368 100644
--- a/stream/realrtsp/rmff.c
+++ b/stream/realrtsp/rmff.c
@@ -847,9 +847,9 @@ void rmff_free_header(rmff_header_t *h) {
 
   if (!h) return;
 
-  if (h->fileheader) free(h->fileheader);
-  if (h->prop) free(h->prop);
-  if (h->data) free(h->data);
+  free(h->fileheader);
+  free(h->prop);
+  free(h->data);
   if (h->cont)
   {
     free(h->cont->title);
diff --git a/stream/realrtsp/sdpplin.c b/stream/realrtsp/sdpplin.c
index 9669b08..855f760 100644
--- a/stream/realrtsp/sdpplin.c
+++ b/stream/realrtsp/sdpplin.c
@@ -368,14 +368,10 @@ void sdpplin_free(sdpplin_t *description) {
 
   for (i = 0; i < description->stream_count; i++) {
     if (description->stream[i]) {
-      if (description->stream[i]->stream_name)
-        free(description->stream[i]->stream_name);
-      if (description->stream[i]->mime_type)
-        free(description->stream[i]->mime_type);
-      if (description->stream[i]->mlti_data)
-        free(description->stream[i]->mlti_data);
-      if (description->stream[i]->asm_rule_book)
-        free(description->stream[i]->asm_rule_book);
+      free(description->stream[i]->stream_name);
+      free(description->stream[i]->mime_type);
+      free(description->stream[i]->mlti_data);
+      free(description->stream[i]->asm_rule_book);
       free(description->stream[i]->id);
       free(description->stream[i]);
     }
@@ -383,14 +379,10 @@ void sdpplin_free(sdpplin_t *description) {
 
   if(description->stream_count)
     free(description->stream);
-  if (description->title)
-    free(description->title);
-  if (description->author)
-    free(description->author);
-  if (description->copyright)
-    free(description->copyright);
-  if (description->abstract)
-    free(description->abstract);
+  free(description->title);
+  free(description->author);
+  free(description->copyright);
+  free(description->abstract);
 
   free(description);
 }
diff --git a/sub/sub.c b/sub/sub.c
index 9f5c6bd..397df0d 100644
--- a/sub/sub.c
+++ b/sub/sub.c
@@ -1080,8 +1080,8 @@ void free_osd_list(void){
     mp_osd_obj_t* obj=vo_osd_list;
     while(obj){
 	mp_osd_obj_t* next=obj->next;
-	if (obj->alpha_buffer) free(obj->alpha_buffer);
-	if (obj->bitmap_buffer) free(obj->bitmap_buffer);
+	free(obj->alpha_buffer);
+	free(obj->bitmap_buffer);
 	free(obj);
 	obj=next;
     }
diff --git a/vidix/ivtv_vid.c b/vidix/ivtv_vid.c
index 16e4492..da946e6 100644
--- a/vidix/ivtv_vid.c
+++ b/vidix/ivtv_vid.c
@@ -382,10 +382,8 @@ void ivtv_destroy(void)
 		close(yuvdev);
 	if(-1 != fbdev)
 		close(fbdev);
-	if(NULL != outbuf)
-		free(outbuf);
-	if(NULL != memBase)
-		free(memBase);
+	free(outbuf);
+	free(memBase);
 }
 
 int ivtv_get_caps(vidix_capability_t *to)
-- 
1.7.3.2


--ZgGN478A9hzzvyZc--


More information about the MPlayer-dev-eng mailing list