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.
This commit is contained in:
Thomas Haller 2025-02-25 17:29:12 +01:00
parent 3f323fe94f
commit a4a20a101b

View File

@ -636,7 +636,7 @@ g_data_set_internal (GData **datalist,
if (dataset && !d) if (dataset && !d)
g_dataset_destroy_internal (dataset); g_dataset_destroy_internal (dataset);
if (d_to_free) if (G_UNLIKELY (d_to_free))
g_free (d_to_free); g_free (d_to_free);
} }
else else
@ -782,7 +782,7 @@ g_datalist_id_remove_multiple (GData **datalist,
if (found_keys > 0 && datalist_shrink (&d, &d_to_free)) if (found_keys > 0 && datalist_shrink (&d, &d_to_free))
{ {
g_datalist_unlock_and_set (datalist, d); g_datalist_unlock_and_set (datalist, d);
if (d_to_free) if (G_UNLIKELY (d_to_free))
g_free (d_to_free); g_free (d_to_free);
} }
else else
@ -1127,7 +1127,7 @@ g_datalist_id_update_atomic (GData **datalist,
if (datalist_shrink (&d, &d_to_free)) if (datalist_shrink (&d, &d_to_free))
{ {
g_datalist_unlock_and_set (datalist, d); g_datalist_unlock_and_set (datalist, d);
if (d_to_free) if (G_UNLIKELY (d_to_free))
g_free (d_to_free); g_free (d_to_free);
to_unlock = FALSE; to_unlock = FALSE;
} }
@ -1376,7 +1376,7 @@ g_datalist_id_replace_data (GData **datalist,
else else
g_datalist_unlock (datalist); g_datalist_unlock (datalist);
if (d_to_free) if (G_UNLIKELY (d_to_free))
g_free (d_to_free); g_free (d_to_free);
return val == oldval; return val == oldval;