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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3364>
This commit is contained in:
Sebastian Dröge 2022-11-08 17:44:54 +02:00
parent c624900a44
commit aadebd6921

View 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