From a4a20a101be621830d5b28ef0b44ff0f7e647e7e Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 25 Feb 2025 17:29:12 +0100 Subject: [PATCH] gdataset: mark freeing of d_to_free buffer as unlikely This only happens during a shrinking of the buffer, which only happens after a remove causes the array to become only 25% filled. Mark those code paths as unlikely. --- glib/gdataset.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/glib/gdataset.c b/glib/gdataset.c index c18e13f06..b4f60f78b 100644 --- a/glib/gdataset.c +++ b/glib/gdataset.c @@ -636,7 +636,7 @@ g_data_set_internal (GData **datalist, if (dataset && !d) g_dataset_destroy_internal (dataset); - if (d_to_free) + if (G_UNLIKELY (d_to_free)) g_free (d_to_free); } else @@ -782,7 +782,7 @@ g_datalist_id_remove_multiple (GData **datalist, if (found_keys > 0 && datalist_shrink (&d, &d_to_free)) { g_datalist_unlock_and_set (datalist, d); - if (d_to_free) + if (G_UNLIKELY (d_to_free)) g_free (d_to_free); } else @@ -1127,7 +1127,7 @@ g_datalist_id_update_atomic (GData **datalist, if (datalist_shrink (&d, &d_to_free)) { g_datalist_unlock_and_set (datalist, d); - if (d_to_free) + if (G_UNLIKELY (d_to_free)) g_free (d_to_free); to_unlock = FALSE; } @@ -1376,7 +1376,7 @@ g_datalist_id_replace_data (GData **datalist, else g_datalist_unlock (datalist); - if (d_to_free) + if (G_UNLIKELY (d_to_free)) g_free (d_to_free); return val == oldval;