]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/empathy-string-parser.c
factor out start_gnome_contacts()
[empathy.git] / libempathy-gtk / empathy-string-parser.c
index 3bb6a82beb0af5a72aff628566a2a5b0c5217fb8..03eaaef29adeb4218a2ccf486466eaa60f3ef7ee 100644 (file)
@@ -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;
@@ -161,20 +173,24 @@ empathy_string_replace_link (const gchar *text,
 {
        GString *string = user_data;
        gchar *real_url;
-       gchar *escaped;
+       gchar *title;
+       gchar *markup;
 
        real_url = empathy_make_absolute_url_len (text, len);
 
-       /* The thing we are making a link of may contain
-        * characters which need escaping */
-       escaped = g_markup_escape_text (text, len);
+       /* Need to copy manually, because g_markup_printf_escaped does not work
+        * with string precision pitfalls. */
+       title = g_strndup (text, len);
 
        /* Append the link inside <a href=""></a> tag */
-       g_string_append_printf (string, "<a href=\"%s\">%s</a>",
-                               real_url, escaped);
+       markup = g_markup_printf_escaped ("<a href=\"%s\">%s</a>",
+                       real_url, title);
+
+       g_string_append (string, markup);
 
        g_free (real_url);
-       g_free (escaped);
+       g_free (title);
+       g_free (markup);
 }
 
 void