From owner-svn-src-user@FreeBSD.ORG  Sun Jul  3 15:27:20 2011
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id CBC6B106566C;
	Sun,  3 Jul 2011 15:27:20 +0000 (UTC)
	(envelope-from gabor@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id B1CB08FC16;
	Sun,  3 Jul 2011 15:27:20 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p63FRKUG023543;
	Sun, 3 Jul 2011 15:27:20 GMT (envelope-from gabor@svn.freebsd.org)
Received: (from gabor@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id p63FRK1Z023540;
	Sun, 3 Jul 2011 15:27:20 GMT (envelope-from gabor@svn.freebsd.org)
Message-Id: <201107031527.p63FRK1Z023540@svn.freebsd.org>
From: Gabor Kovesdan <gabor@FreeBSD.org>
Date: Sun, 3 Jul 2011 15:27:20 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r223737 - user/gabor/tre-integration/contrib/tre/lib
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 03 Jul 2011 15:27:21 -0000

Author: gabor
Date: Sun Jul  3 15:27:20 2011
New Revision: 223737
URL: http://svn.freebsd.org/changeset/base/223737

Log:
  - Finish single-byte, multi-byte and wide character support bits

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

Modified: user/gabor/tre-integration/contrib/tre/lib/fastmatch.c
==============================================================================
--- user/gabor/tre-integration/contrib/tre/lib/fastmatch.c	Sun Jul  3 13:27:23 2011	(r223736)
+++ user/gabor/tre-integration/contrib/tre/lib/fastmatch.c	Sun Jul  3 15:27:20 2011	(r223737)
@@ -269,7 +269,7 @@ tre_fastexec(const fastmatch_t *fg, cons
   int cnt = 0;
   int ret = REG_NOMATCH;
   const char *str_byte = data;
-  const void *startptr;
+  const void *startptr = NULL;
 #ifdef TRE_WCHAR
   const wchar_t *str_wide = data;
 #endif
@@ -334,14 +334,34 @@ tre_fastexec(const fastmatch_t *fg, cons
         break;
 #ifdef TRE_WCHAR
       {
-	int k, r;
-
-	r = hashtable_get(fg->qsBc, &data[j - fg->len - 1], &k);
+	int k, r = -1;
+	wint_t wc;
+	const char *ch;
+	const wchar_t *ws;
+
+	SKIP_CHARS(j - fg->len - 1);
+	switch (type)
+	  {
+	    case STR_BYTE:
+	    case STR_MBS:
+	      ch = startptr;
+	      mbrtowc(&wc, ch, MB_CUR_MAX, NULL);
+	      r = hashtable_get(fg->qsBc, &wc, &k);
+	      break;
+	    case STR_WIDE:
+	      ws = startptr;
+	      r = hashtable_get(fg->qsBc, ws, &k);
+	      break;
+	    default:
+	      /* XXX */
+	      break;
+	  }
 	k = (r == 0) ? k : fg->defBc;
-	j -= k;
+	j += k;
       }
 #else
-      j -= fg->qsBc[data[j - fg->len - 1]];
+      SKIP_CHARS(j - fg->len - 1);
+      j += fg->qsBc[startptr[0]];
 #endif
     } while (j >= fg->len);
   } else {
@@ -369,14 +389,34 @@ tre_fastexec(const fastmatch_t *fg, cons
 	break;
 #ifdef TRE_WCHAR
       {
-	int k, r;
-
-	r = hashtable_get(fg->qsBc, &data[j + fg->len], &k);
+	int k, r = -1;
+	wint_t wc;
+	const char *ch;
+	const wchar_t *ws;
+
+	SKIP_CHARS(j + fg->len);
+	switch (type)
+	  {
+	    case STR_BYTE:
+	    case STR_MBS:
+	      ch = startptr;
+	      mbrtowc(&wc, ch, MB_CUR_MAX, NULL);
+	      r = hashtable_get(fg->qsBc, &wc, &k);
+	      break;
+	    case STR_WIDE:
+	      ws = startptr;
+	      r = hashtable_get(fg->qsBc, ws, &k);
+	      break;
+	    default:
+	      /* XXX */
+	      break;
+	  }
 	k = (r == 0) ? k : fg->defBc;
 	j += k;
       }
 #else
-      j += fg->qsBc[data[j + fg->len]];
+      SKIP_CHARS(j + fg->len);
+      j += fg->qsBc[startptr[0]];
 #endif
     } while (j <= (len - fg->len));
   }

Modified: user/gabor/tre-integration/contrib/tre/lib/regexec.c
==============================================================================
--- user/gabor/tre-integration/contrib/tre/lib/regexec.c	Sun Jul  3 13:27:23 2011	(r223736)
+++ user/gabor/tre-integration/contrib/tre/lib/regexec.c	Sun Jul  3 15:27:20 2011	(r223737)
@@ -158,7 +158,7 @@ tre_match(const tre_tnfa_t *tnfa, const 
 
   /* Check if we can cheat with a fixed string */
   if (shortcut != NULL)
-      return tre_fastexec(shortcut, string, len, nmatch, pmatch);
+      return tre_fastexec(shortcut, string, len, type, nmatch, pmatch);
 
   if (tnfa->num_tags > 0 && nmatch > 0)
     {

From owner-svn-src-user@FreeBSD.ORG  Sun Jul  3 15:28:32 2011
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id ADADE1065672;
	Sun,  3 Jul 2011 15:28:32 +0000 (UTC)
	(envelope-from gabor@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 9E6FC8FC0C;
	Sun,  3 Jul 2011 15:28:32 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p63FSWZO023615;
	Sun, 3 Jul 2011 15:28:32 GMT (envelope-from gabor@svn.freebsd.org)
Received: (from gabor@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id p63FSWkT023613;
	Sun, 3 Jul 2011 15:28:32 GMT (envelope-from gabor@svn.freebsd.org)
Message-Id: <201107031528.p63FSWkT023613@svn.freebsd.org>
From: Gabor Kovesdan <gabor@FreeBSD.org>
Date: Sun, 3 Jul 2011 15:28:32 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r223738 - user/gabor/tre-integration/contrib/tre/lib
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 03 Jul 2011 15:28:32 -0000

Author: gabor
Date: Sun Jul  3 15:28:32 2011
New Revision: 223738
URL: http://svn.freebsd.org/changeset/base/223738

Log:
  - Increase hash table size to reduce collisions and thus the lookup overhead

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	Sun Jul  3 15:27:20 2011	(r223737)
+++ user/gabor/tre-integration/contrib/tre/lib/fastmatch.c	Sun Jul  3 15:28:32 2011	(r223738)
@@ -96,7 +96,7 @@ tre_fastcomp_literal(fastmatch_t *fg, co
   /* Preprocess pattern. */
 #ifdef TRE_WCHAR
   fg->defBc = fg->len;
-  fg->qsBc = hashtable_init(fg->len, sizeof(tre_char_t), sizeof(int));
+  fg->qsBc = hashtable_init(fg->len * 3, sizeof(tre_char_t), sizeof(int));
   if (fg->qsBc == NULL)
     return -1;
   for (unsigned int i = 1; i < fg->len; i++)

From owner-svn-src-user@FreeBSD.ORG  Sun Jul  3 15:40:47 2011
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 8710F106566C;
	Sun,  3 Jul 2011 15:40:47 +0000 (UTC)
	(envelope-from gabor@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 77A748FC1C;
	Sun,  3 Jul 2011 15:40:47 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p63Feltu024045;
	Sun, 3 Jul 2011 15:40:47 GMT (envelope-from gabor@svn.freebsd.org)
Received: (from gabor@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id p63FelML024043;
	Sun, 3 Jul 2011 15:40:47 GMT (envelope-from gabor@svn.freebsd.org)
Message-Id: <201107031540.p63FelML024043@svn.freebsd.org>
From: Gabor Kovesdan <gabor@FreeBSD.org>
Date: Sun, 3 Jul 2011 15:40:47 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r223740 - user/gabor/tre-integration/contrib/tre/lib
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 03 Jul 2011 15:40:47 -0000

Author: gabor
Date: Sun Jul  3 15:40:47 2011
New Revision: 223740
URL: http://svn.freebsd.org/changeset/base/223740

Log:
  - style nits

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	Sun Jul  3 15:34:09 2011	(r223739)
+++ user/gabor/tre-integration/contrib/tre/lib/fastmatch.c	Sun Jul  3 15:40:47 2011	(r223740)
@@ -41,7 +41,8 @@
 #include "tre-internal.h"
 #include "xmalloc.h"
 
-static int	fastcmp(const tre_char_t *, const void *, size_t, tre_str_type_t);
+static int	fastcmp(const tre_char_t *, const void *, size_t,
+			tre_str_type_t);
 static void	revstr(tre_char_t *, int);
 
 #ifdef TRE_WCHAR
@@ -78,7 +79,8 @@ static void	revstr(tre_char_t *, int);
  * Returns: -1 on failure, 0 on success
  */
 int
-tre_fastcomp_literal(fastmatch_t *fg, const tre_char_t *pat, size_t n, int cflags)
+tre_fastcomp_literal(fastmatch_t *fg, const tre_char_t *pat, size_t n,
+		     int cflags)
 {
 
   /* Initialize. */
@@ -150,7 +152,8 @@ tre_fastcomp(fastmatch_t *fg, const tre_
 
   if ((fg->len >= 14) &&
       (memcmp(pat, TRE_CHAR("[[:<:]]"), 7 * sizeof(tre_char_t)) == 0) &&
-      (memcmp(pat + fg->len - 7, TRE_CHAR("[[:>:]]"), 7 * sizeof(tre_char_t)) == 0))
+      (memcmp(pat + fg->len - 7, TRE_CHAR("[[:>:]]"),
+	      7 * sizeof(tre_char_t)) == 0))
   {
     fg->len -= 14;
     pat += 7;

From owner-svn-src-user@FreeBSD.ORG  Tue Jul  5 18:29:32 2011
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id EC0AC1065676;
	Tue,  5 Jul 2011 18:29:32 +0000 (UTC)
	(envelope-from gabor@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id DD5898FC13;
	Tue,  5 Jul 2011 18:29:32 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p65ITW49080351;
	Tue, 5 Jul 2011 18:29:32 GMT (envelope-from gabor@svn.freebsd.org)
Received: (from gabor@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id p65ITW9O080349;
	Tue, 5 Jul 2011 18:29:32 GMT (envelope-from gabor@svn.freebsd.org)
Message-Id: <201107051829.p65ITW9O080349@svn.freebsd.org>
From: Gabor Kovesdan <gabor@FreeBSD.org>
Date: Tue, 5 Jul 2011 18:29:32 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r223793 - user/gabor/tre-integration/contrib/tre/lib
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 05 Jul 2011 18:29:33 -0000

Author: gabor
Date: Tue Jul  5 18:29:32 2011
New Revision: 223793
URL: http://svn.freebsd.org/changeset/base/223793

Log:
  - Fix buggy macro definition

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

Modified: user/gabor/tre-integration/contrib/tre/lib/tre.h
==============================================================================
--- user/gabor/tre-integration/contrib/tre/lib/tre.h	Tue Jul  5 15:00:55 2011	(r223792)
+++ user/gabor/tre-integration/contrib/tre/lib/tre.h	Tue Jul  5 18:29:32 2011	(r223793)
@@ -82,13 +82,13 @@ typedef enum {
 #define REG_ICASE	(REG_EXTENDED << 1)
 #define REG_NEWLINE	(REG_ICASE << 1)
 #define REG_NOSUB	(REG_NEWLINE << 1)
-#define REG_PEND	(REG_NOSUB << 1)
 
 /* Extra tre_regcomp() flags. */
 #define REG_BASIC	0
 #define REG_LITERAL	(REG_NOSUB << 1)
 #define REG_RIGHT_ASSOC (REG_LITERAL << 1)
 #define REG_UNGREEDY    (REG_RIGHT_ASSOC << 1)
+#define REG_PEND        (REG_UNGREEDY << 1)
 
 /* POSIX tre_regexec() flags. */
 #define REG_NOTBOL 1

From owner-svn-src-user@FreeBSD.ORG  Fri Jul  8 01:32:04 2011
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 8D3D6106564A;
	Fri,  8 Jul 2011 01:32:04 +0000 (UTC)
	(envelope-from gabor@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 7CA978FC13;
	Fri,  8 Jul 2011 01:32:04 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p681W46b086969;
	Fri, 8 Jul 2011 01:32:04 GMT (envelope-from gabor@svn.freebsd.org)
Received: (from gabor@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id p681W4nc086966;
	Fri, 8 Jul 2011 01:32:04 GMT (envelope-from gabor@svn.freebsd.org)
Message-Id: <201107080132.p681W4nc086966@svn.freebsd.org>
From: Gabor Kovesdan <gabor@FreeBSD.org>
Date: Fri, 8 Jul 2011 01:32:04 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r223853 - user/gabor/tre-integration/contrib/tre/lib
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Fri, 08 Jul 2011 01:32:04 -0000

Author: gabor
Date: Fri Jul  8 01:32:04 2011
New Revision: 223853
URL: http://svn.freebsd.org/changeset/base/223853

Log:
  - Partly fix fixed string matching by dropping weird code that is not
    necessary at all

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

Modified: user/gabor/tre-integration/contrib/tre/lib/fastmatch.c
==============================================================================
--- user/gabor/tre-integration/contrib/tre/lib/fastmatch.c	Fri Jul  8 00:49:50 2011	(r223852)
+++ user/gabor/tre-integration/contrib/tre/lib/fastmatch.c	Fri Jul  8 01:32:04 2011	(r223853)
@@ -79,8 +79,7 @@ static void	revstr(tre_char_t *, int);
  * Returns: -1 on failure, 0 on success
  */
 int
-tre_fastcomp_literal(fastmatch_t *fg, const tre_char_t *pat, size_t n,
-		     int cflags)
+tre_fastcomp_literal(fastmatch_t *fg, const tre_char_t *pat, size_t n)
 {
 
   /* Initialize. */
@@ -88,7 +87,6 @@ tre_fastcomp_literal(fastmatch_t *fg, co
   fg->bol = false;
   fg->eol = false;
   fg->reversed = false;
-  fg->cflags = cflags;
   fg->pattern = xmalloc((fg->len + 1) * sizeof(tre_char_t));
   if (fg->pattern == NULL)
     return -1;
@@ -120,7 +118,7 @@ tre_fastcomp_literal(fastmatch_t *fg, co
  * Returns: -1 on failure, 0 on success
  */
 int
-tre_fastcomp(fastmatch_t *fg, const tre_char_t *pat, size_t n, int cflags)
+tre_fastcomp(fastmatch_t *fg, const tre_char_t *pat, size_t n)
 {
   int firstHalfDot = -1;
   int firstLastHalfDot = -1;
@@ -133,7 +131,6 @@ tre_fastcomp(fastmatch_t *fg, const tre_
   fg->eol = false;
   fg->reversed = false;
   fg->word = false;
-  fg->cflags = cflags;
 
   /* Remove end-of-line character ('$'). */
   if ((fg->len > 0) && (pat[fg->len - 1] == TRE_CHAR('$')))
@@ -166,6 +163,8 @@ tre_fastcomp(fastmatch_t *fg, const tre_
    * of the string respectively.
    */
   fg->pattern = xmalloc((fg->len + 1) * sizeof(tre_char_t));
+  if (fg->pattern == NULL)
+    return -1;
   memcpy(fg->pattern, pat, fg->len * sizeof(tre_char_t));
   fg->pattern[fg->len] = TRE_CHAR('\0');
 
@@ -269,7 +268,6 @@ tre_fastexec(const fastmatch_t *fg, cons
 {
   unsigned int j;
   size_t siz, skip;
-  int cnt = 0;
   int ret = REG_NOMATCH;
   const char *str_byte = data;
   const void *startptr = NULL;
@@ -306,10 +304,8 @@ tre_fastexec(const fastmatch_t *fg, cons
       j = fg->eol ? len - fg->len : 0;
       SKIP_CHARS(j);
       if (fastcmp(fg->pattern, startptr, fg->len, type) == -1) {
-	if (!(fg->cflags & REG_NOSUB) || (nmatch < 1))
-	  return REG_OK;
-	pmatch[cnt].rm_so = j;
-	pmatch[cnt].rm_eo = j + fg->len;
+	pmatch[0].rm_so = j;
+	pmatch[0].rm_eo = j + fg->len;
 	return REG_OK;
       }
     }
@@ -319,18 +315,9 @@ tre_fastexec(const fastmatch_t *fg, cons
     do {
       SKIP_CHARS(j - fg->len);
       if (fastcmp(fg->pattern, startptr, fg->len, type) == -1) {
-	if (!(fg->cflags & REG_NOSUB) || (nmatch < 1))
-	  return REG_OK;
-	pmatch[cnt++].rm_so = j - fg->len;
-	pmatch[cnt++].rm_eo = j;
-	nmatch--;
-	ret = REG_OK;
-	if (nmatch < 1)
-	  return ret;
-	else {
-	  j -= 2 * fg->len;
-	  continue;
-	}
+	pmatch[0].rm_so = j - fg->len;
+	pmatch[0].rm_eo = j;
+	return REG_OK;
       }
       /* Shift if within bounds, otherwise, we are done. */
       if (((long)j - (long)fg->len - 1) < 0)
@@ -373,18 +360,9 @@ tre_fastexec(const fastmatch_t *fg, cons
     do {
       SKIP_CHARS(j);
       if (fastcmp(fg->pattern, startptr, fg->len, type) == -1) {
-	if (!(fg->cflags & REG_NOSUB) || (nmatch < 1))
-	  return REG_OK;
-	pmatch[cnt++].rm_so = j;
-	pmatch[cnt++].rm_eo = j + fg->len;
-	nmatch--;
-	ret = REG_OK;
-	if (nmatch < 1)
-	  return ret;
-	else {
-	  j += fg->len;
-	  continue;
-	}
+	pmatch[0].rm_so = j;
+	pmatch[0].rm_eo = j + fg->len;
+	return REG_OK;
       }
 
       /* Shift if within bounds, otherwise, we are done. */

Modified: user/gabor/tre-integration/contrib/tre/lib/fastmatch.h
==============================================================================
--- user/gabor/tre-integration/contrib/tre/lib/fastmatch.h	Fri Jul  8 00:49:50 2011	(r223852)
+++ user/gabor/tre-integration/contrib/tre/lib/fastmatch.h	Fri Jul  8 01:32:04 2011	(r223853)
@@ -44,7 +44,6 @@ typedef struct {
   int qsBc[UCHAR_MAX + 1];
 #endif
   /* flags */
-  int cflags;
   bool bol;
   bool eol;
   bool reversed;
@@ -52,9 +51,8 @@ typedef struct {
 } fastmatch_t;
 
 int	tre_fastcomp_literal(fastmatch_t *preg, const tre_char_t *regex,
-	    size_t, int cflags);
-int	tre_fastcomp(fastmatch_t *preg, const tre_char_t *regex, size_t,
-	    int cflags);
+	    size_t);
+int	tre_fastcomp(fastmatch_t *preg, const tre_char_t *regex, size_t);
 int	tre_fastexec(const fastmatch_t *fg, const void *data, size_t len,
 	    tre_str_type_t type, int nmatch, regmatch_t pmatch[]);
 void	tre_fastfree(fastmatch_t *preg);