Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Aug 2011 18:49:43 +0000 (UTC)
From:      Gabor Kovesdan <gabor@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r224897 - user/gabor/tre-integration/contrib/tre/lib
Message-ID:  <201108151849.p7FInhX8023150@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gabor
Date: Mon Aug 15 18:49:42 2011
New Revision: 224897
URL: http://svn.freebsd.org/changeset/base/224897

Log:
  - Do not limit pattern length

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

Modified: user/gabor/tre-integration/contrib/tre/lib/tre-fastmatch.c
==============================================================================
--- user/gabor/tre-integration/contrib/tre/lib/tre-fastmatch.c	Mon Aug 15 18:07:41 2011	(r224896)
+++ user/gabor/tre-integration/contrib/tre/lib/tre-fastmatch.c	Mon Aug 15 18:49:42 2011	(r224897)
@@ -239,14 +239,24 @@ static int	fastcmp(const void *, const v
  */
 #define FILL_BMGS							\
   if (!fg->hasdot)							\
-    _FILL_BMGS(fg->sbmGs, fg->pattern, fg->len, false);
+    {									\
+      fg->sbmGs = xmalloc(fg->len * sizeof(int));			\
+      if (!fg->sbmGs)							\
+	return REG_ESPACE;						\
+      _FILL_BMGS(fg->sbmGs, fg->pattern, fg->len, false);		\
+    }
 
 /*
  * Fills in the good suffix table for wide strings.
  */
 #define FILL_BMGS_WIDE							\
   if (!fg->hasdot)							\
-    _FILL_BMGS(fg->bmGs, fg->wpattern, fg->wlen, true);
+    {									\
+      fg->bmGs = xmalloc(fg->wlen * sizeof(int));			\
+      if (!fg->bmGs)							\
+	return REG_ESPACE;						\
+      _FILL_BMGS(fg->bmGs, fg->wpattern, fg->wlen, true);		\
+    }
 
 #define _FILL_BMGS(arr, pat, plen, wide)				\
   {									\
@@ -634,8 +644,12 @@ tre_free_fast(fastmatch_t *fg)
 
 #ifdef TRE_WCHAR
   hashtable_free(fg->qsBc_table);
+  if (!fg->hasdot)
+    xfree(fg->bmGs);
   xfree(fg->wpattern);
 #endif
+  if (!fg->hasdot)
+    xfree(fg->sbmGs);
   xfree(fg->pattern);
 }
 

Modified: user/gabor/tre-integration/contrib/tre/lib/tre-fastmatch.h
==============================================================================
--- user/gabor/tre-integration/contrib/tre/lib/tre-fastmatch.h	Mon Aug 15 18:07:41 2011	(r224896)
+++ user/gabor/tre-integration/contrib/tre/lib/tre-fastmatch.h	Mon Aug 15 18:49:42 2011	(r224897)
@@ -35,21 +35,17 @@
 #include "hashtable.h"
 #include "tre-internal.h"
 
-#define BM_MAX_LEN 1024
-
 typedef struct {
   size_t wlen;
   size_t len;
   tre_char_t *wpattern;
   int hasdot;
   int qsBc[UCHAR_MAX + 1];
-  int bmGs[BM_MAX_LEN];
-#ifdef TRE_WCHAR
+  int *bmGs;
   char *pattern;
   int defBc;
   hashtable *qsBc_table;
-  int sbmGs[BM_MAX_LEN];
-#endif
+  int *sbmGs;
   /* flags */
   bool bol;
   bool eol;



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