allocator: Copy allocator name in gst_allocator_register()
authorSebastian Dröge <sebastian@centricular.com>
Tue, 8 Nov 2022 15:44:54 +0000 (17:44 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Tue, 8 Nov 2022 15:44:54 +0000 (17:44 +0200)
The parameter is not marked as `transfer full` and stays around in the
hash table, so we will have to copy it ourselves.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3364>

subprojects/gstreamer/gst/gstallocator.c

index 6b30476..28f1db5 100644 (file)
@@ -233,7 +233,8 @@ gst_allocator_register (const gchar * name, GstAllocator * allocator)
   g_rw_lock_writer_lock (&lock);
   /* The ref will never be released */
   GST_OBJECT_FLAG_SET (allocator, GST_OBJECT_FLAG_MAY_BE_LEAKED);
-  g_hash_table_insert (allocators, (gpointer) name, (gpointer) allocator);
+  g_hash_table_insert (allocators, (gpointer) g_strdup (name),
+      (gpointer) allocator);
   g_rw_lock_writer_unlock (&lock);
 }
 
@@ -599,7 +600,7 @@ void
 _priv_gst_allocator_initialize (void)
 {
   g_rw_lock_init (&lock);
-  allocators = g_hash_table_new_full (g_str_hash, g_str_equal, NULL,
+  allocators = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
       gst_object_unref);
 
 #ifdef HAVE_GETPAGESIZE