aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-string-parser.c
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2011-02-10 20:18:12 +0800
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2011-02-10 20:18:12 +0800
commitef8d5543ab390b62c99a0fc17e1ef30cdb08f6a5 (patch)
treeec415a1ad118ada62ed4f0ba65413d0cfe5d1c1b /libempathy-gtk/empathy-string-parser.c
parent3272874ae2d8cf8e53dd939fb590fbf63c9dc6fa (diff)
downloadgsoc2013-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.c14
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;