mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-23 10:42:11 +01:00
Be more robust against printf failures
If an 'output error' is encountered, vsnprintf() will return -1, causing g_printf_string_upper_bound() to return 0. Handle this case in g_vasprintf() without crashing. Fixes: #3187
This commit is contained in:
parent
40081f9b62
commit
bd6a22c4ab
@ -357,13 +357,16 @@ g_vasprintf (gchar **string,
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
{
|
||||||
|
*string = g_new (gchar, g_printf_string_upper_bound (format, args));
|
||||||
|
|
||||||
|
if (*string == NULL)
|
||||||
|
len = -1;
|
||||||
|
else
|
||||||
{
|
{
|
||||||
va_list args2;
|
va_list args2;
|
||||||
|
|
||||||
va_copy (args2, args);
|
va_copy (args2, args);
|
||||||
|
|
||||||
*string = g_new (gchar, g_printf_string_upper_bound (format, args));
|
|
||||||
|
|
||||||
len = _g_vsprintf (*string, format, args2);
|
len = _g_vsprintf (*string, format, args2);
|
||||||
va_end (args2);
|
va_end (args2);
|
||||||
|
|
||||||
@ -373,6 +376,7 @@ g_vasprintf (gchar **string,
|
|||||||
*string = NULL;
|
*string = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user