When the compilation of a pattern fails in the error message use the
authorMarco Barisione <marco@barisione.org>
Mon, 19 Nov 2007 11:27:43 +0000 (11:27 +0000)
committerMarco Barisione <mbari@src.gnome.org>
Mon, 19 Nov 2007 11:27:43 +0000 (11:27 +0000)
2007-11-19  Marco Barisione  <marco@barisione.org>

* glib/gregex.c: When the compilation of a pattern fails in the error
message use the character offset and not the byte offset.

svn path=/trunk/; revision=5867

ChangeLog
glib/gregex.c

index 4b67d1d..e33086c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-11-19  Marco Barisione  <marco@barisione.org>
+
+       * glib/gregex.c: When the compilation of a pattern fails in the error
+       message use the character offset and not the byte offset.
+
 2007-11-19 10:30:33  Tim Janik  <timj@imendio.com>
 
        * configure.in: updated version number to 2.15.0 for development.
index 9485dae..d0acc8b 100644 (file)
@@ -924,11 +924,16 @@ g_regex_new (const gchar         *pattern,
    * immediately */
   if (re == NULL)
     {
-      GError *tmp_error = g_error_new (G_REGEX_ERROR, 
-                                      G_REGEX_ERROR_COMPILE,
-                                      _("Error while compiling regular "
-                                        "expression %s at char %d: %s"),
-                                      pattern, erroffset, errmsg);
+      GError *tmp_error;
+
+      /* PCRE uses byte offsets but we want to show character offsets */
+      erroffset = g_utf8_pointer_to_offset (pattern, &pattern[erroffset]);
+
+      tmp_error = g_error_new (G_REGEX_ERROR, 
+                              G_REGEX_ERROR_COMPILE,
+                              _("Error while compiling regular "
+                                "expression %s at char %d: %s"),
+                              pattern, erroffset, errmsg);
       g_propagate_error (error, tmp_error);
 
       return NULL;