svn commit: r223983 - user/gabor/tre-integration/contrib/tre/lib

Gabor Kovesdan gabor at FreeBSD.org
Wed Jul 13 17:38:43 UTC 2011


Author: gabor
Date: Wed Jul 13 17:38:42 2011
New Revision: 223983
URL: http://svn.freebsd.org/changeset/base/223983

Log:
  - Fix REG_STARTEND

Modified:
  user/gabor/tre-integration/contrib/tre/lib/regexec.c
  user/gabor/tre-integration/contrib/tre/lib/tre-compile.c
  user/gabor/tre-integration/contrib/tre/lib/tre.h

Modified: user/gabor/tre-integration/contrib/tre/lib/regexec.c
==============================================================================
--- user/gabor/tre-integration/contrib/tre/lib/regexec.c	Wed Jul 13 17:09:15 2011	(r223982)
+++ user/gabor/tre-integration/contrib/tre/lib/regexec.c	Wed Jul 13 17:38:42 2011	(r223983)
@@ -155,10 +155,11 @@ tre_match(const tre_tnfa_t *tnfa, const 
 {
   reg_errcode_t status;
   int *tags = NULL, eo;
+  int ret;
 
   /* Check if we can cheat with a fixed string */
   if (shortcut != NULL)
-      return tre_fastexec(shortcut, string, len, type, nmatch, pmatch);
+    return tre_fastexec(shortcut, string, len, type, nmatch, pmatch);
 
   if (tnfa->num_tags > 0 && nmatch > 0)
     {
@@ -230,9 +231,11 @@ tre_regnexec(const regex_t *preg, const 
     str = &str[offset];
     int ret = tre_match(tnfa, str, slen, type, nmatch, pmatch, eflags,
 			preg->shortcut);
+    pmatch[0].rm_so += offset;
+    pmatch[0].rm_eo += offset;
     if (!(eflags & REG_NOSUB))
     {
-      for (unsigned i = 0; i < nmatch; i++)
+      for (unsigned i = 1; i < nmatch; i++)
       {
 	pmatch[i].rm_so += offset;
         pmatch[i].rm_eo += offset;
@@ -270,6 +273,8 @@ tre_regwnexec(const regex_t *preg, const
     str = &str[offset];
     int ret = tre_match(tnfa, str, slen, STR_WIDE, nmatch, pmatch, eflags,
 			preg->shortcut);
+    pmatch[0].rm_so += offset;
+    pmatch[0].rm_eo += offset;
     if (!(eflags & REG_NOSUB))
     {
       for (unsigned i = 0; i < nmatch; i++)

Modified: user/gabor/tre-integration/contrib/tre/lib/tre-compile.c
==============================================================================
--- user/gabor/tre-integration/contrib/tre/lib/tre-compile.c	Wed Jul 13 17:09:15 2011	(r223982)
+++ user/gabor/tre-integration/contrib/tre/lib/tre-compile.c	Wed Jul 13 17:38:42 2011	(r223983)
@@ -1876,8 +1876,8 @@ tre_compile(regex_t *preg, const tre_cha
   if (!shortcut)
     return REG_ESPACE;
   ret = (cflags & REG_LITERAL)
-    ? tre_fastcomp_literal(shortcut, regex, n, cflags)
-    : tre_fastcomp(shortcut, regex, n, cflags);
+    ? tre_fastcomp_literal(shortcut, regex, n)
+    : tre_fastcomp(shortcut, regex, n);
   if (!ret)
     {
       preg->shortcut = shortcut;

Modified: user/gabor/tre-integration/contrib/tre/lib/tre.h
==============================================================================
--- user/gabor/tre-integration/contrib/tre/lib/tre.h	Wed Jul 13 17:09:15 2011	(r223982)
+++ user/gabor/tre-integration/contrib/tre/lib/tre.h	Wed Jul 13 17:38:42 2011	(r223983)
@@ -93,11 +93,11 @@ typedef enum {
 /* POSIX tre_regexec() flags. */
 #define REG_NOTBOL 1
 #define REG_NOTEOL (REG_NOTBOL << 1)
-#define REG_STARTEND (REG_NOTEOL << 1)
 
 /* Extra tre_regexec() flags. */
 #define REG_APPROX_MATCHER	 (REG_NOTEOL << 1)
 #define REG_BACKTRACKING_MATCHER (REG_APPROX_MATCHER << 1)
+#define REG_STARTEND             (REG_BACKTRACKING_MATCHER << 1)
 
 /* REG_NOSPEC and REG_LITERAL mean the same thing. */
 #if defined(REG_LITERAL) && !defined(REG_NOSPEC)


More information about the svn-src-user mailing list