summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-03-28 14:23:35 +0000
committerMatthias Clasen <mclasen@redhat.com>2021-03-28 14:23:35 +0000
commit3e1a8aa286c2cf9dd819724a479156229570ff02 (patch)
tree62ce6ee95ef979e770509e17a86705d9af953313
parent926b855d14316dcf03a7a48c03faccf793d06a42 (diff)
parentdb126a19b600166caf3c268c3a0deca18a5c881e (diff)
downloadgtk+-3e1a8aa286c2cf9dd819724a479156229570ff02.tar.gz
Merge branch 'fix-memleaks' into 'master'
Fix memleaks See merge request GNOME/gtk!3360
-rw-r--r--gtk.supp8
-rw-r--r--gtk/gtkcssprovider.c2
-rw-r--r--lsan.supp1
-rw-r--r--testsuite/gdk/pixbuf.c39
-rw-r--r--testsuite/gtk/bitset.c3
-rw-r--r--testsuite/gtk/stringlist.c2
6 files changed, 40 insertions, 15 deletions
diff --git a/gtk.supp b/gtk.supp
index 1211eeea2c..927d6f102b 100644
--- a/gtk.supp
+++ b/gtk.supp
@@ -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);
}
}
diff --git a/lsan.supp b/lsan.supp
index dddb9b91f6..32185fc61a 100644
--- a/lsan.supp
+++ b/lsan.supp
@@ -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