Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Aug 2011 14:11:03 +0000 (UTC)
From:      Gabor Kovesdan <gabor@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r224968 - user/gabor/tre-integration/contrib/tre/lib
Message-ID:  <201108181411.p7IEB3Zg060263@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gabor
Date: Thu Aug 18 14:11:03 2011
New Revision: 224968
URL: http://svn.freebsd.org/changeset/base/224968

Log:
  - Properly pass pattern length to underlying functions

Modified:
  user/gabor/tre-integration/contrib/tre/lib/fastmatch.c

Modified: user/gabor/tre-integration/contrib/tre/lib/fastmatch.c
==============================================================================
--- user/gabor/tre-integration/contrib/tre/lib/fastmatch.c	Thu Aug 18 13:33:34 2011	(r224967)
+++ user/gabor/tre-integration/contrib/tre/lib/fastmatch.c	Thu Aug 18 14:11:03 2011	(r224968)
@@ -34,7 +34,7 @@
 #include "tre-internal.h"
 #include "xmalloc.h"
 
-/* XXX: clean up */
+/* XXX: avoid duplication */
 #define CONV_PAT							\
   int ret;								\
   tre_char_t *wregex;							\
@@ -43,6 +43,17 @@
   wregex = xmalloc(sizeof(tre_char_t) * (n + 1));			\
   if (wregex == NULL)							\
     return REG_ESPACE;							\
+									\
+  if (TRE_MB_CUR_MAX == 1)						\
+    {									\
+      unsigned int i;							\
+      const unsigned char *str = (const unsigned char *)regex;		\
+      tre_char_t *wstr = wregex;					\
+									\
+      for (i = 0; i < n; i++)						\
+        *(wstr++) = *(str++);						\
+      wlen = n;								\
+    }									\
   else									\
     {									\
       int consumed;							\
@@ -87,7 +98,7 @@ tre_fixncomp(fastmatch_t *preg, const ch
 {
   CONV_PAT;
 
-  ret = tre_compile_literal(preg, wregex, n, cflags);
+  ret = tre_compile_literal(preg, wregex, wlen, cflags);
   xfree(wregex);
 
   return ret;
@@ -99,8 +110,8 @@ tre_fastncomp(fastmatch_t *preg, const c
   CONV_PAT;
 
   ret = (cflags & REG_LITERAL) ?
-    tre_compile_literal(preg, wregex, n, cflags) :
-    tre_compile_fast(preg, wregex, n, cflags);
+    tre_compile_literal(preg, wregex, wlen, cflags) :
+    tre_compile_fast(preg, wregex, wlen, cflags);
   xfree(wregex);
 
   return ret;
@@ -110,13 +121,13 @@ tre_fastncomp(fastmatch_t *preg, const c
 int
 tre_fixcomp(fastmatch_t *preg, const char *regex, int cflags)
 {
-  return tre_fixncomp(preg, regex, 0, cflags);
+  return tre_fixncomp(preg, regex, regex ? strlen(regex) : 0, cflags);
 }
 
 int
 tre_fastcomp(fastmatch_t *preg, const char *regex, int cflags)
 {
-  return tre_fastncomp(preg, regex, 0, cflags);
+  return tre_fastncomp(preg, regex, regex ? strlen(regex) : 0, cflags);
 }
 
 int
@@ -136,13 +147,13 @@ tre_fastwncomp(fastmatch_t *preg, const 
 int
 tre_fixwcomp(fastmatch_t *preg, const wchar_t *regex, int cflags)
 {
-  return tre_fixwncomp(preg, regex, 0, cflags);
+  return tre_fixwncomp(preg, regex, regex ? tre_strlen(regex) : 0, cflags);
 }
 
 int
 tre_fastwcomp(fastmatch_t *preg, const wchar_t *regex, int cflags)
 {
-  return tre_fastwncomp(preg, regex, 0, cflags);
+  return tre_fastwncomp(preg, regex, regex ? tre_strlen(regex) : 0, cflags);
 }
 
 void



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201108181411.p7IEB3Zg060263>