diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-09-12 13:56:19 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-09-12 14:01:45 -0400 |
commit | 867151e1f211e2c24cede98fc4c868217968ce5a (patch) | |
tree | a7d0a66c006f53a39037d0ff4a2424dd2d87f5fd /tests/test-break.c | |
parent | cca04f5edcbe6253dbcda922bd90b11f7746f050 (diff) | |
download | pango-867151e1f211e2c24cede98fc4c868217968ce5a.tar.gz |
tests: Fix some more memory errorsasan-fixes
test-break was leaking memory in various places,
in particular when tests are skipped.
Diffstat (limited to 'tests/test-break.c')
-rw-r--r-- | tests/test-break.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/tests/test-break.c b/tests/test-break.c index 0773e5d2..c4359643 100644 --- a/tests/test-break.c +++ b/tests/test-break.c @@ -62,7 +62,6 @@ test_file (const gchar *filename, GString *string) length = strlen (test); len = g_utf8_strlen (test, -1) + 1; - attrs = g_new (PangoLogAttr, len); pango_parse_markup (test, -1, 0, &attributes, &text, NULL, &error); g_assert_no_error (error); @@ -79,6 +78,10 @@ test_file (const gchar *filename, GString *string) g_test_skip (msg); g_free (msg); #endif + g_free (contents); + g_object_unref (layout); + pango_attr_list_unref (attributes); + g_free (text); return FALSE; } @@ -225,6 +228,7 @@ test_file (const gchar *filename, GString *string) g_object_unref (layout); g_free (attrs); g_free (contents); + g_free (text); pango_attr_list_unref (attributes); return TRUE; @@ -255,7 +259,7 @@ test_break (gconstpointer d) GString *dump; gchar *diff; - const char *old_locale = setlocale (LC_ALL, NULL); + char *old_locale = g_strdup (setlocale (LC_ALL, NULL)); setlocale (LC_ALL, "en_US.utf8"); if (strstr (setlocale (LC_ALL, NULL), "en_US") == NULL) { @@ -265,20 +269,26 @@ test_break (gconstpointer d) g_test_skip (msg); g_free (msg); #endif + g_free (old_locale); return; } - expected_file = get_expected_filename (filename); - dump = g_string_sized_new (0); if (!test_file (filename, dump)) - return; + { + g_free (old_locale); + g_string_free (dump, TRUE); + return; + } + + expected_file = get_expected_filename (filename); diff = diff_with_file (expected_file, dump->str, dump->len, &error); g_assert_no_error (error); setlocale (LC_ALL, old_locale); + g_free (old_locale); if (diff && diff[0]) { |