mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-31 12:53:07 +02:00
g_variant_get_child(): flatten-first logic on '&'
Copy the flatten-first logic from g_variant_get(), and for the same reason: if the user is requesting a direct pointer access to a tree-based child inside of argument to this function then that child could disappear later. Forcing serialisation means that the pointer will remain valid as long as the passed-in instance exists, which is the usual expectation with GVariant API. https://bugzilla.gnome.org/show_bug.cgi?id=755374
This commit is contained in:
parent
3c0d38d68b
commit
56b164a195
@ -5446,6 +5446,10 @@ g_variant_get_child (GVariant *value,
|
|||||||
GVariant *child;
|
GVariant *child;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
|
/* if any direct-pointer-access formats are in use, flatten first */
|
||||||
|
if (strchr (format_string, '&'))
|
||||||
|
g_variant_get_data (value);
|
||||||
|
|
||||||
child = g_variant_get_child_value (value, index_);
|
child = g_variant_get_child_value (value, index_);
|
||||||
g_return_if_fail (valid_format_string (format_string, TRUE, child));
|
g_return_if_fail (valid_format_string (format_string, TRUE, child));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user