Fixed a memory leak in stock_pixmap_widget_with_overlay().
[claws.git] / src / stock_pixmap.c
index 3f69b59e173f9bb1554e31b3b9491bf9e7134463..87d640a299f093a1aaea9881c221e6712792cefe 100644 (file)
@@ -74,6 +74,8 @@
 #include "pixmaps/mail_attach.xpm"
 #include "pixmaps/mail_compose.xpm"
 #include "pixmaps/mail_forward.xpm"
+#include "pixmaps/mail_privacy_encrypted.xpm"
+#include "pixmaps/mail_privacy_signed.xpm"
 #include "pixmaps/mail_receive.xpm"
 #include "pixmaps/mail_receive_all.xpm"
 #include "pixmaps/mail_reply.xpm"
@@ -326,6 +328,8 @@ static StockPixmapData pixmaps[] =
     {mail_attach_xpm                  , NULL, NULL, "mail_attach", NULL, NULL},
     {mail_compose_xpm                 , NULL, NULL, "mail_compose", NULL, NULL},
     {mail_forward_xpm                 , NULL, NULL, "mail_forward", NULL, NULL},
+    {mail_privacy_encrypted_xpm       , NULL, NULL, "mail_privacy_encrypted", NULL, NULL},
+    {mail_privacy_signed_xpm          , NULL, NULL, "mail_privacy_signed", NULL, NULL},
     {mail_receive_xpm                 , NULL, NULL, "mail_receive", NULL, NULL},
     {mail_receive_all_xpm             , NULL, NULL, "mail_receive_all", NULL, NULL},
     {mail_reply_xpm                   , NULL, NULL, "mail_reply", NULL, NULL},
@@ -836,6 +840,9 @@ void stock_pixmap_themes_list_free(GList *list)
 {
        GList *ptr;
 
+       if (list == NULL)
+               return;
+
        for (ptr = g_list_first(list); ptr != NULL; ptr = g_list_next(ptr))
                g_free(ptr->data);
        g_list_free(list);
@@ -1057,6 +1064,7 @@ GtkWidget *stock_pixmap_widget_with_overlay(StockPixmap icon,
        data = g_new0(OverlayData, 1);
 
        stock_wid = stock_pixmap_widget(icon);
+       g_object_ref_sink(stock_wid);
        gtk_widget_get_requisition(stock_wid, &requisition);
 
 #if !GTK_CHECK_VERSION(3, 0, 0)
@@ -1074,7 +1082,7 @@ GtkWidget *stock_pixmap_widget_with_overlay(StockPixmap icon,
                data->base_pixmap = stock_pixmap;
                data->base_height = requisition.height;
                data->base_width  = requisition.width;
-               gtk_widget_destroy(stock_wid);
+               g_object_unref(stock_wid);
 
                if (pos == OVERLAY_NONE) {
                        data->overlay_pixmap = NULL;
@@ -1097,7 +1105,7 @@ GtkWidget *stock_pixmap_widget_with_overlay(StockPixmap icon,
                data->base_pixbuf = stock_pixbuf;
                data->base_height = requisition.height;
                data->base_width  = requisition.width;
-               gtk_widget_destroy(stock_wid);
+               g_object_unref(stock_wid);
                if (pos == OVERLAY_NONE) {
                        data->overlay_pixmap = NULL;
                } else {