diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-03-28 14:23:35 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-03-28 14:23:35 +0000 |
commit | 3e1a8aa286c2cf9dd819724a479156229570ff02 (patch) | |
tree | 62ce6ee95ef979e770509e17a86705d9af953313 | |
parent | 926b855d14316dcf03a7a48c03faccf793d06a42 (diff) | |
parent | db126a19b600166caf3c268c3a0deca18a5c881e (diff) | |
download | gtk+-3e1a8aa286c2cf9dd819724a479156229570ff02.tar.gz |
Merge branch 'fix-memleaks' into 'master'
Fix memleaks
See merge request GNOME/gtk!3360
-rw-r--r-- | gtk.supp | 8 | ||||
-rw-r--r-- | gtk/gtkcssprovider.c | 2 | ||||
-rw-r--r-- | lsan.supp | 1 | ||||
-rw-r--r-- | testsuite/gdk/pixbuf.c | 39 | ||||
-rw-r--r-- | testsuite/gtk/bitset.c | 3 | ||||
-rw-r--r-- | testsuite/gtk/stringlist.c | 2 |
6 files changed, 40 insertions, 15 deletions
@@ -285,3 +285,11 @@ ... fun:g_intern_static_string } + +# Threads +{ + pthread + Memcheck:Leak + fun:calloc + fun:_dl_allocate_tls +} diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index 3b1caa7125..43882cf385 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -1052,6 +1052,8 @@ gtk_css_provider_load_internal (GtkCssProvider *self, "Failed to import: %s", load_error->message); } + + g_error_free (load_error); } } @@ -7,3 +7,4 @@ leak:libglib-2.0.so leak:libgio-2.0.so leak:libcairo.so leak:libpixman-1.so +leak:librsvg-2.so diff --git a/testsuite/gdk/pixbuf.c b/testsuite/gdk/pixbuf.c index 592f5d0d32..591444fd86 100644 --- a/testsuite/gdk/pixbuf.c +++ b/testsuite/gdk/pixbuf.c @@ -1,31 +1,42 @@ #include <gdk-pixbuf/gdk-pixbuf.h> -int -main (int argc, char *argv[]) +static void +test_format (gconstpointer d) { + const char *f = d; GSList *formats; - gboolean have_png, have_jpeg; + gboolean found; - have_png = FALSE; - have_jpeg = FALSE; + found = FALSE; formats = gdk_pixbuf_get_formats (); - for (GSList *l = formats; l; l = l->next) + for (GSList *l = formats; l && !found; l = l->next) { GdkPixbufFormat *format = l->data; - const char *name; + char *name; name = gdk_pixbuf_format_get_name (format); - if (strcmp (name, "png") == 0) - have_png = TRUE; - else if (strcmp (name, "jpeg") == 0) - have_jpeg = TRUE; + if (strcmp (name, f) == 0) + found = TRUE; + + g_free (name); } - if (!have_png || !have_jpeg) - return 1; + g_slist_free (formats); + + g_assert_true (found); +} + + +int +main (int argc, char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + g_test_add_data_func ("/pixbuf/format/png", "png", test_format); + g_test_add_data_func ("/pixbuf/format/jpeg", "jpeg", test_format); - return 0; + return g_test_run (); } diff --git a/testsuite/gtk/bitset.c b/testsuite/gtk/bitset.c index 110dc1401e..2c01912317 100644 --- a/testsuite/gtk/bitset.c +++ b/testsuite/gtk/bitset.c @@ -553,6 +553,9 @@ test_splice_overflow (void) compare = gtk_bitset_new_range (16, 1); g_assert_true (gtk_bitset_equals (set, compare)); + + gtk_bitset_unref (compare); + gtk_bitset_unref (set); } int diff --git a/testsuite/gtk/stringlist.c b/testsuite/gtk/stringlist.c index 63a1f6def4..93e9720d2c 100644 --- a/testsuite/gtk/stringlist.c +++ b/testsuite/gtk/stringlist.c @@ -167,7 +167,7 @@ test_create_builder (void) list = GTK_STRING_LIST (gtk_builder_get_object (builder, "list")); assert_model (list, "a b c"); - g_object_unref (list); + g_object_unref (builder); } static void |