GVariant: Better handling of invalid UTF-8

g_variant_new_string() hits a g_return_if_fail() when given invalid
UTF-8.  That's certainly the right thing to do, but
g_variant_builder_add() uses this function internally and crashes when
it returns NULL due to the user passing a non-utf8 string.

We can protect the internal code by returning "[Invalid UTF-8]" in this
case while also making the problem easier to debug (and less fatal).

Closes #632631.
This commit is contained in:
Ryan Lortie 2011-05-04 18:12:31 +02:00
parent d97cbc6731
commit e823ba10d3

View File

@ -3687,7 +3687,16 @@ g_variant_valist_new_nnp (const gchar **str,
}
case 's':
return g_variant_new_string (ptr);
{
GVariant *value;
value = g_variant_new_string (ptr);
if (value == NULL)
value = g_variant_new_string ("[Invalid UTF-8]");
return value;
}
case 'o':
return g_variant_new_object_path (ptr);