mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-13 07:56:17 +01:00
glib/gvariant: fix compile error with GCC 14.0.1
This was erroring on recent GCC because `struct heap_dict` is smaller than the publicly provided size (guintptr[16]) in the header for GVariantDict. Port to use `g_malloc()` directly, and use a static assertion to ensure we’re allocating the larger of the two struct sizes.
This commit is contained in:
parent
5b9dac546e
commit
e5409374b2
@ -3978,7 +3978,11 @@ g_variant_dict_new (GVariant *from_asv)
|
||||
{
|
||||
GVariantDict *dict;
|
||||
|
||||
dict = g_slice_alloc (sizeof (struct heap_dict));
|
||||
/* We actually want to treat the allocation as a `struct heap_dict`, but the
|
||||
* compiler will warn if it’s not at least as big as `struct GVariantDict`. */
|
||||
G_STATIC_ASSERT (sizeof (GVariantDict) >= sizeof (struct heap_dict));
|
||||
|
||||
dict = g_malloc (sizeof (GVariantDict));
|
||||
g_variant_dict_init (dict, from_asv);
|
||||
GVHD(dict)->magic = GVHD_MAGIC;
|
||||
GVHD(dict)->ref_count = 1;
|
||||
@ -4331,7 +4335,7 @@ g_variant_dict_unref (GVariantDict *dict)
|
||||
if (--GVHD(dict)->ref_count == 0)
|
||||
{
|
||||
g_variant_dict_clear (dict);
|
||||
g_slice_free (struct heap_dict, (struct heap_dict *) dict);
|
||||
g_free_sized (dict, sizeof (GVariantDict));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user