1
0
mirror of https://gitlab.gnome.org/GNOME/glib.git synced 2025-07-20 08:57:50 +02:00

Merge branch 'scanner-undefined-behaviour' into 'master'

gscanner: Avoid undefined behaviour copying between union members

See merge request 
This commit is contained in:
Emmanuele Bassi
2020-11-03 17:25:04 +00:00

@@ -1696,12 +1696,19 @@ g_scanner_get_token_i (GScanner *scanner,
scanner->config->int_2_float)
{
*token_p = G_TOKEN_FLOAT;
/* Have to assign through a temporary variable to avoid undefined behaviour
* by copying between potentially-overlapping union members. */
if (scanner->config->store_int64)
{
value_p->v_float = value_p->v_int64;
gint64 temp = value_p->v_int64;
value_p->v_float = temp;
}
else
value_p->v_float = value_p->v_int;
{
gint temp = value_p->v_int;
value_p->v_float = temp;
}
}
errno = 0;