mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-26 15:36:14 +01: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;
|
||||
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_);
|
||||
g_return_if_fail (valid_format_string (format_string, TRUE, child));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user