[gtk+/gtk-2-24] pixbuf-engine: Improve ThemePixbuf clean up functions



commit e2aabc016a818de99fae3661c65ebd224c5cce11
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Mon Nov 18 11:04:37 2013 +0000

    pixbuf-engine: Improve ThemePixbuf clean up functions
    
    Make theme_pixbuf_destroy() NULL-safe like g_free(), and add a clear
    function in the spirit of the g_clear_* family of functions.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=712536

 modules/engines/pixbuf/pixbuf-render.c |   21 +++++++++++++++++++--
 modules/engines/pixbuf/pixbuf.h        |    1 +
 2 files changed, 20 insertions(+), 2 deletions(-)
---
diff --git a/modules/engines/pixbuf/pixbuf-render.c b/modules/engines/pixbuf/pixbuf-render.c
index c05832d..a272ff4 100644
--- a/modules/engines/pixbuf/pixbuf-render.c
+++ b/modules/engines/pixbuf/pixbuf-render.c
@@ -524,8 +524,25 @@ theme_pixbuf_new (void)
 void
 theme_pixbuf_destroy (ThemePixbuf *theme_pb)
 {
-  theme_pixbuf_set_filename (theme_pb, NULL);
-  g_free (theme_pb);
+  if (G_LIKELY (theme_pb))
+    {
+      theme_pixbuf_set_filename (theme_pb, NULL);
+      g_free (theme_pb);
+    }
+}
+
+void
+theme_clear_pixbuf (ThemePixbuf **theme_pb)
+{
+#if GLIB_CHECK_VERSION (2, 34, 0)
+  g_clear_pointer (theme_pb, theme_pixbuf_destroy);
+#else
+  if (*theme_pb)
+    {
+      theme_pixbuf_destroy (*theme_pb);
+      *theme_pb = NULL;
+    }
+#endif
 }
 
 void         
diff --git a/modules/engines/pixbuf/pixbuf.h b/modules/engines/pixbuf/pixbuf.h
index d0c74e9..c656c6f 100644
--- a/modules/engines/pixbuf/pixbuf.h
+++ b/modules/engines/pixbuf/pixbuf.h
@@ -195,6 +195,7 @@ struct _ThemeImage
 
 G_GNUC_INTERNAL ThemePixbuf *theme_pixbuf_new          (void);
 G_GNUC_INTERNAL void         theme_pixbuf_destroy      (ThemePixbuf  *theme_pb);
+G_GNUC_INTERNAL void         theme_clear_pixbuf        (ThemePixbuf **theme_pb);
 G_GNUC_INTERNAL void         theme_pixbuf_set_filename (ThemePixbuf  *theme_pb,
                                        const char   *filename);
 G_GNUC_INTERNAL GdkPixbuf *  theme_pixbuf_get_pixbuf   (ThemePixbuf  *theme_pb);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]