diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2011-02-10 20:18:12 +0800 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2011-02-10 20:18:12 +0800 |
commit | ef8d5543ab390b62c99a0fc17e1ef30cdb08f6a5 (patch) | |
tree | ec415a1ad118ada62ed4f0ba65413d0cfe5d1c1b /libempathy-gtk/empathy-string-parser.c | |
parent | 3272874ae2d8cf8e53dd939fb590fbf63c9dc6fa (diff) | |
download | gsoc2013-empathy-ef8d5543ab390b62c99a0fc17e1ef30cdb08f6a5.tar gsoc2013-empathy-ef8d5543ab390b62c99a0fc17e1ef30cdb08f6a5.tar.gz gsoc2013-empathy-ef8d5543ab390b62c99a0fc17e1ef30cdb08f6a5.tar.bz2 gsoc2013-empathy-ef8d5543ab390b62c99a0fc17e1ef30cdb08f6a5.tar.lz gsoc2013-empathy-ef8d5543ab390b62c99a0fc17e1ef30cdb08f6a5.tar.xz gsoc2013-empathy-ef8d5543ab390b62c99a0fc17e1ef30cdb08f6a5.tar.zst gsoc2013-empathy-ef8d5543ab390b62c99a0fc17e1ef30cdb08f6a5.zip |
string-parser: properly handle if g_regex_new() fails
Diffstat (limited to 'libempathy-gtk/empathy-string-parser.c')
-rw-r--r-- | libempathy-gtk/empathy-string-parser.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/libempathy-gtk/empathy-string-parser.c b/libempathy-gtk/empathy-string-parser.c index 5f5df5209..03eaaef29 100644 --- a/libempathy-gtk/empathy-string-parser.c +++ b/libempathy-gtk/empathy-string-parser.c @@ -43,7 +43,14 @@ uri_regex_dup_singleton (void) /* We intentionally leak the regex so it's not recomputed */ if (!uri_regex) { - uri_regex = g_regex_new (URI_REGEX, 0, 0, NULL); + GError *error = NULL; + + uri_regex = g_regex_new (URI_REGEX, 0, 0, &error); + if (uri_regex == NULL) { + g_warning ("Failed to create reg exp: %s", error->message); + g_error_free (error); + return NULL; + } } return g_regex_ref (uri_regex); @@ -75,6 +82,11 @@ empathy_string_match_link (const gchar *text, gint last = 0; uri_regex = uri_regex_dup_singleton (); + if (uri_regex == NULL) { + empathy_string_parser_substr (text, len, sub_parsers, user_data); + return; + } + match = g_regex_match_full (uri_regex, text, len, 0, 0, &match_info, NULL); if (match) { gint s = 0, e = 0; |