2007-08-03 Matthias Clasen <mclasen@redhat.com>
+ * glib/gregex.c: Revert the J handling change,
+ since it doesn't work.
+
+2007-08-03 Matthias Clasen <mclasen@redhat.com>
+
* glib/gregex.c: Fix a C99ism. (#462549, Kazuki IWAMOTO)
2007-08-03 Matthias Clasen <mclasen@redhat.com>
gchar *first, *last;
guchar *entry;
-#if PCRE_MAJOR > 7 || PCRE_MINOR >= 2
- if (!(match_info->regex->compile_opts & G_REGEX_DUPNAMES))
+ /*
+ * FIXME: (?J) may be used inside the pattern as the equivalent of
+ * DUPNAMES compile option. In this case we can't know about it,
+ * and pcre doesn't tell us about it either, it uses private flag
+ * PCRE_JCHANGED for this. So we have to always search string
+ * table, unlike pcre which uses pcre_get_stringnumber() shortcut
+ * when possible. It shouldn't be actually bad since
+ * pcre_get_stringtable_entries() uses binary search; still would
+ * be better to fix it, to be not worse than pcre.
+ */
+#if 0
+ if ((match_info->regex->compile_opts & G_REGEX_DUPNAMES) == 0)
return pcre_get_stringnumber (match_info->regex->pcre_re, name);
#endif
gint erroffset;
gboolean optimize = FALSE;
static gboolean initialized = FALSE;
-
+
g_return_val_if_fail (pattern != NULL, NULL);
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
g_return_val_if_fail ((compile_options & ~G_REGEX_COMPILE_MASK) == 0, NULL);
return NULL;
}
-#if PCRE_MAJOR > 7 || PCRE_MINOR >= 2
- if (!(compile_options & G_REGEX_DUPNAMES))
- {
- gboolean jchanged = FALSE;
- pcre_fullinfo (re, NULL, PCRE_INFO_JCHANGED, &jchanged);
- if (jchanged)
- compile_options |= G_REGEX_DUPNAMES;
- }
-#endif
-
regex = g_new0 (GRegex, 1);
regex->ref_count = 1;
regex->pattern = g_strdup (pattern);