mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-03 14:42:10 +01:00
Handle invalid UTF-8. (#131218, patch from Matthias Clasen)
Sun Mar 14 13:56:48 2004 Owen Taylor <otaylor@redhat.com> * glib/gmessages.c (escape_string): Handle invalid UTF-8. (#131218, patch from Matthias Clasen)
This commit is contained in:
parent
f0f807c51f
commit
08fc5350bb
@ -1,3 +1,8 @@
|
|||||||
|
Sun Mar 14 13:56:48 2004 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* glib/gmessages.c (escape_string): Handle invalid
|
||||||
|
UTF-8. (#131218, patch from Matthias Clasen)
|
||||||
|
|
||||||
Sun Mar 14 13:23:36 2004 Owen Taylor <otaylor@redhat.com>
|
Sun Mar 14 13:23:36 2004 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* glib/gspawn.c: Use fork1() not fork for
|
* glib/gspawn.c: Use fork1() not fork for
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
Sun Mar 14 13:56:48 2004 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* glib/gmessages.c (escape_string): Handle invalid
|
||||||
|
UTF-8. (#131218, patch from Matthias Clasen)
|
||||||
|
|
||||||
Sun Mar 14 13:23:36 2004 Owen Taylor <otaylor@redhat.com>
|
Sun Mar 14 13:23:36 2004 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* glib/gspawn.c: Use fork1() not fork for
|
* glib/gspawn.c: Use fork1() not fork for
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
Sun Mar 14 13:56:48 2004 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* glib/gmessages.c (escape_string): Handle invalid
|
||||||
|
UTF-8. (#131218, patch from Matthias Clasen)
|
||||||
|
|
||||||
Sun Mar 14 13:23:36 2004 Owen Taylor <otaylor@redhat.com>
|
Sun Mar 14 13:23:36 2004 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* glib/gspawn.c: Use fork1() not fork for
|
* glib/gspawn.c: Use fork1() not fork for
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
Sun Mar 14 13:56:48 2004 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* glib/gmessages.c (escape_string): Handle invalid
|
||||||
|
UTF-8. (#131218, patch from Matthias Clasen)
|
||||||
|
|
||||||
Sun Mar 14 13:23:36 2004 Owen Taylor <otaylor@redhat.com>
|
Sun Mar 14 13:23:36 2004 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* glib/gspawn.c: Use fork1() not fork for
|
* glib/gspawn.c: Use fork1() not fork for
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
Sun Mar 14 13:56:48 2004 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* glib/gmessages.c (escape_string): Handle invalid
|
||||||
|
UTF-8. (#131218, patch from Matthias Clasen)
|
||||||
|
|
||||||
Sun Mar 14 13:23:36 2004 Owen Taylor <otaylor@redhat.com>
|
Sun Mar 14 13:23:36 2004 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* glib/gspawn.c: Use fork1() not fork for
|
* glib/gspawn.c: Use fork1() not fork for
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
Sun Mar 14 13:56:48 2004 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* glib/gmessages.c (escape_string): Handle invalid
|
||||||
|
UTF-8. (#131218, patch from Matthias Clasen)
|
||||||
|
|
||||||
Sun Mar 14 13:23:36 2004 Owen Taylor <otaylor@redhat.com>
|
Sun Mar 14 13:23:36 2004 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* glib/gspawn.c: Use fork1() not fork for
|
* glib/gspawn.c: Use fork1() not fork for
|
||||||
|
@ -562,7 +562,7 @@ strdup_convert (const gchar *string,
|
|||||||
*p < 0x80)
|
*p < 0x80)
|
||||||
g_string_append_c (gstring, *p);
|
g_string_append_c (gstring, *p);
|
||||||
else
|
else
|
||||||
g_string_append_printf (gstring, "\\%03o", *p);
|
g_string_append_printf (gstring, "\\x%02x", (guint)(guchar)*p);
|
||||||
}
|
}
|
||||||
|
|
||||||
return g_string_free (gstring, FALSE);
|
return g_string_free (gstring, FALSE);
|
||||||
@ -787,7 +787,22 @@ escape_string (GString *string)
|
|||||||
{
|
{
|
||||||
gboolean safe;
|
gboolean safe;
|
||||||
|
|
||||||
wc = g_utf8_get_char (p);
|
wc = g_utf8_get_char_validated (p, -1);
|
||||||
|
if (wc == (gunichar)-1 || wc == (gunichar)-2)
|
||||||
|
{
|
||||||
|
gchar *tmp;
|
||||||
|
|
||||||
|
g_string_erase (string, p - string->str, 1);
|
||||||
|
/* Emit invalid UTF-8 as hex escapes
|
||||||
|
*/
|
||||||
|
tmp = g_strdup_printf ("\\x%02x", (guint)(guchar)*p);
|
||||||
|
g_string_insert (string, p - string->str, tmp);
|
||||||
|
g_free (tmp);
|
||||||
|
|
||||||
|
p += 4; /* Skip over escape sequence */
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (wc == '\r')
|
if (wc == '\r')
|
||||||
{
|
{
|
||||||
safe = *(p + 1) == '\n';
|
safe = *(p + 1) == '\n';
|
||||||
@ -866,18 +881,22 @@ g_log_default_handler (const gchar *log_domain,
|
|||||||
g_string_append (gstring, "(NULL) message");
|
g_string_append (gstring, "(NULL) message");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
GString *msg;
|
||||||
const gchar *charset;
|
const gchar *charset;
|
||||||
|
|
||||||
|
msg = g_string_new (message);
|
||||||
|
escape_string (msg);
|
||||||
|
|
||||||
if (g_get_charset (&charset))
|
if (g_get_charset (&charset))
|
||||||
g_string_append (gstring, message); /* charset is UTF-8 already */
|
g_string_append (gstring, msg->str); /* charset is UTF-8 already */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string = strdup_convert (message, charset);
|
string = strdup_convert (msg->str, charset);
|
||||||
g_string_append (gstring, string);
|
g_string_append (gstring, string);
|
||||||
g_free (string);
|
g_free (string);
|
||||||
}
|
}
|
||||||
|
|
||||||
escape_string (gstring);
|
g_string_free (msg, TRUE);
|
||||||
}
|
}
|
||||||
if (is_fatal)
|
if (is_fatal)
|
||||||
g_string_append (gstring, "\naborting...\n");
|
g_string_append (gstring, "\naborting...\n");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user