stringsorter: Fix one case of collation handling
authorMatthias Clasen <mclasen@redhat.com>
Fri, 18 Nov 2022 04:52:35 +0000 (23:52 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 18 Nov 2022 05:04:23 +0000 (00:04 -0500)
When not ignoring case, and not collating, we were
returning sort keys that were already freed. Oops.

Pointed out by clang.

gtk/gtkstringsorter.c

index 507adca17cf1eff165b262cc9785905638775165..ed2a0ac34ca5f4abb03714d6a6f6925f2c36edac 100644 (file)
@@ -86,14 +86,20 @@ gtk_string_sorter_get_key (GtkExpression *expression,
   switch (collation)
     {
     case GTK_COLLATION_NONE:
-      key = s;
+      if (ignore_case)
+        key = g_steal_pointer (&s);
+      else
+        key = g_strdup (s);
       break;
+
     case GTK_COLLATION_UNICODE:
       key = g_utf8_collate_key (s, -1);
       break;
+
     case GTK_COLLATION_FILENAME:
       key = g_utf8_collate_key_for_filename (s, -1);
       break;
+
     default:
       g_assert_not_reached ();
       break;