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 <bri...@vmware.com>


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to