[Mesa-dev] [PATCH 5/9] Remove useless checks for NULL before freeing

Brian Paul brianp at vmware.com
Wed Sep 5 07:33:59 PDT 2012


On 09/05/2012 12:42 AM, Matt Turner wrote:
> This patch has been generated by the following Coccinelle semantic
> patch:
>
> // Remove useless checks for NULL before freeing
> //
> // free (NULL) is a no-op, so there is no need to avoid it
>
> @@
> expression E;
> @@
> + free (E);
> + E = NULL;
> - if (unlikely (E != NULL)) {
> -   free(E);
> (
> -   E = NULL;
> |
> -   E = 0;
> )
>     ...
> - }
>
> @@
> expression E;
> type T;
> @@
> + free ((T) E);
> + E = NULL;
> - if (unlikely (E != NULL)) {
> -   free((T) E);
> (
> -   E = NULL;
> |
> -   E = 0;
> )
>     ...
> - }
>
> @@
> expression E;
> @@
> + free (E);
> - if (unlikely (E != NULL)) {
> -   free (E);
> - }
>
> @@
> expression E;
> type T;
> @@
> + free ((T) E);
> - if (unlikely (E != NULL)) {
> -   free ((T) E);
> - }
> ---
>   src/egl/drivers/dri2/egl_dri2.c                    |    3 +--
>   src/egl/drivers/dri2/platform_x11.c                |    3 +--
>   src/egl/drivers/glx/egl_glx.c                      |    6 ++----
>   src/gallium/drivers/r600/r600_shader.c             |    6 ++----
>   src/gallium/state_trackers/egl/x11/glxinit.c       |    4 +---
>   src/gallium/state_trackers/egl/x11/x11_screen.c    |    9 +++------
>   src/gallium/state_trackers/glx/xlib/xm_api.c       |    6 ++----
>   src/gallium/state_trackers/glx/xlib/xm_st.c        |    6 ++----
>   src/gallium/state_trackers/vega/shaders_cache.c    |    9 +++------
>   src/gallium/state_trackers/xvmc/subpicture.c       |    3 +--
>   src/gallium/targets/graw-xlib/graw_xlib.c          |    3 +--
>   src/glx/dri2_glx.c                                 |    6 ++----
>   src/glx/dri_glx.c                                  |    6 ++----
>   src/glx/drisw_glx.c                                |    3 +--
>   src/glx/glxext.c                                   |    9 +++------
>   src/glx/indirect_glx.c                             |   12 ++++--------
>   src/glx/indirect_vertex_array.c                    |   12 ++++--------
>   src/mesa/drivers/dri/common/xmlconfig.c            |    9 +++------
>   src/mesa/drivers/dri/intel/intel_buffer_objects.c  |    6 ++----
>   src/mesa/drivers/dri/intel/intel_tex.c             |    6 ++----
>   .../drivers/dri/radeon/radeon_common_context.c     |    3 +--
>   src/mesa/drivers/dri/radeon/radeon_texture.c       |    6 ++----
>   src/mesa/drivers/x11/fakeglx.c                     |    4 +---
>   src/mesa/main/atifragshader.c                      |   12 ++++--------
>   src/mesa/main/bufferobj.c                          |    3 +--
>   src/mesa/main/context.c                            |    6 ++----
>   src/mesa/main/imports.c                            |    3 +--
>   src/mesa/main/shaderapi.c                          |    4 +---
>   src/mesa/main/shaderobj.c                          |    9 +++------
>   src/mesa/main/texcompress_cpal.c                   |    3 +--
>   src/mesa/main/texcompress_fxt1.c                   |    4 +---
>   src/mesa/program/arbprogparse.c                    |   12 ++++--------
>   src/mesa/program/nvfragparse.c                     |    8 ++------
>   src/mesa/program/nvvertparse.c                     |    8 ++------
>   src/mesa/program/prog_instruction.c                |    6 ++----
>   src/mesa/program/prog_parameter.c                  |    3 +--
>   src/mesa/program/program.c                         |    3 +--
>   src/mesa/state_tracker/st_cb_texture.c             |    3 +--
>   src/mesa/swrast/s_context.c                        |    3 +--
>   src/mesa/swrast/s_drawpix.c                        |    4 +---
>   src/mesa/swrast/s_renderbuffer.c                   |   12 ++++--------
>   src/mesa/swrast/s_texture.c                        |    6 ++----
>   src/mesa/tnl/t_vb_texgen.c                         |    4 ++--
>   src/mesa/vbo/vbo_primitive_restart.c               |    4 +---
>   src/mesa/vbo/vbo_rebase.c                          |    6 ++----
>   src/mesa/vbo/vbo_save_api.c                        |    6 ++----
>   46 files changed, 88 insertions(+), 184 deletions(-)


The patch looks OK (one little note below) but this is pretty huge. 
In the future could you break down big patches into glx, mesa and 
gallium chunks?


[...]

> diff --git a/src/gallium/state_trackers/egl/x11/x11_screen.c b/src/gallium/state_trackers/egl/x11/x11_screen.c
> index 47d9a69..effac0e 100644
> --- a/src/gallium/state_trackers/egl/x11/x11_screen.c
> +++ b/src/gallium/state_trackers/egl/x11/x11_screen.c
> @@ -95,10 +95,8 @@ x11_screen_destroy(struct x11_screen *xscr)
>   {
>      if (xscr->dri_fd>= 0)
>         close(xscr->dri_fd);
> -   if (xscr->dri_driver)
> -      free(xscr->dri_driver);
> -   if (xscr->dri_device)
> -      free(xscr->dri_device);
> +   free(xscr->dri_driver);
> +   free(xscr->dri_device);
>
>   #ifdef GLX_DIRECT_RENDERING
>      /* xscr->glx_dpy will be destroyed with the X display */
> @@ -106,8 +104,7 @@ x11_screen_destroy(struct x11_screen *xscr)
>         xscr->glx_dpy->xscr = NULL;
>   #endif
>
> -   if (xscr->visuals)
> -      free(xscr->visuals);
> +   free(xscr->visuals);
>      FREE(xscr);

Looks like we've still got more MALLOC/CALLOC/FREE clean-up to do.

Reviewed-by: Brian Paul <brianp at vmware.com>




More information about the mesa-dev mailing list