backend/native: Handle NULL priv->startup_render_devices
In add_drm_device, calling g_hash_table_insert with NULL for the hash table (which happens for any device added after mutter finished starting up) would presumably just drop the key/value pointers on the floor, leaking the string & MetaRenderDevice object referenced by them. Fixing this should help for the referenced issue. In meta_backend_native_take_render_device, g_hash_table_steal_extended would presumably return FALSE (and log a warning), so the behaviour would be "correct" by chance. Issue: https://gitlab.gnome.org/GNOME/mutter/-/issues/3785 Fixes: 58c3734d78e9 ("backend/native: Prepare render devices earlier than KMS") Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4136>
This commit is contained in:
parent
206ec7b46b
commit
a516090014
@ -548,9 +548,12 @@ add_drm_device (MetaBackendNative *backend_native,
|
||||
if (!kms_device)
|
||||
return FALSE;
|
||||
|
||||
g_hash_table_insert (priv->startup_render_devices,
|
||||
g_strdup (device_path),
|
||||
g_steal_pointer (&render_device));
|
||||
if (priv->startup_render_devices)
|
||||
{
|
||||
g_hash_table_insert (priv->startup_render_devices,
|
||||
g_strdup (device_path),
|
||||
g_steal_pointer (&render_device));
|
||||
}
|
||||
|
||||
gpu_kms = meta_gpu_kms_new (backend_native, kms_device, error);
|
||||
meta_backend_add_gpu (META_BACKEND (backend_native), META_GPU (gpu_kms));
|
||||
@ -1011,7 +1014,8 @@ meta_backend_native_take_render_device (MetaBackendNative *backend_native,
|
||||
MetaRenderDevice *render_device;
|
||||
g_autofree char *stolen_device_path = NULL;
|
||||
|
||||
if (g_hash_table_steal_extended (priv->startup_render_devices,
|
||||
if (priv->startup_render_devices &&
|
||||
g_hash_table_steal_extended (priv->startup_render_devices,
|
||||
device_path,
|
||||
(gpointer *) &stolen_device_path,
|
||||
(gpointer *) &render_device))
|
||||
|
Loading…
x
Reference in New Issue
Block a user