From ef8474aad514fab5b3f4a5b36d8626405af1dbc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 8 Nov 2022 17:44:54 +0200 Subject: [PATCH] allocator: Copy allocator name in gst_allocator_register() 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: --- subprojects/gstreamer/gst/gstallocator.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/subprojects/gstreamer/gst/gstallocator.c b/subprojects/gstreamer/gst/gstallocator.c index 6b3047636d..28f1db5da7 100644 --- a/subprojects/gstreamer/gst/gstallocator.c +++ b/subprojects/gstreamer/gst/gstallocator.c @@ -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