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

Matt Turner mattst88 at gmail.com
Wed Sep 5 10:52:01 PDT 2012


On Wed, Sep 5, 2012 at 7:33 AM, Brian Paul <brianp at vmware.com> wrote:
> 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?

Sure. I can do that here if you like.

>> 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