svn commit: r226563 - user/gabor/tre-integration/contrib/tre/lib
Gabor Kovesdan
gabor at FreeBSD.org
Thu Oct 20 09:57:28 UTC 2011
Author: gabor
Date: Thu Oct 20 09:57:27 2011
New Revision: 226563
URL: http://svn.freebsd.org/changeset/base/226563
Log:
- Minor fixes
Modified:
user/gabor/tre-integration/contrib/tre/lib/tre-heuristic.c
Modified: user/gabor/tre-integration/contrib/tre/lib/tre-heuristic.c
==============================================================================
--- user/gabor/tre-integration/contrib/tre/lib/tre-heuristic.c Thu Oct 20 09:55:21 2011 (r226562)
+++ user/gabor/tre-integration/contrib/tre/lib/tre-heuristic.c Thu Oct 20 09:57:27 2011 (r226563)
@@ -140,6 +140,7 @@ tre_compile_heur(heur_t *h, const tre_ch
* Process the pattern char-by-char.
*
* i: position in regex
+ * j: number of fragment
* st: start offset of current segment (fixed-length fragment)
* to be processed
* pos: current position (and length) in the temporary space where
@@ -331,8 +332,8 @@ end_segment:
errcode = REG_ESPACE;
goto err;
}
- memcpy(&arr[j], &heur, pos);
- arr[j][pos] = TRE_CHAR('\0');
+ heur[pos] = TRE_CHAR('\0');
+ memcpy(arr[j], heur, (pos + 1) * sizeof(tre_char_t));
length[j] = pos;
j++;
pos = 0;
@@ -344,7 +345,7 @@ ok:
size_t m = 1;
int ret;
- for(int i = 1; i < j; i++)
+ for (int i = 1; i < j; i++)
m = (length[i] > length[m]) ? i : m;
if (!h->heurs)
@@ -363,11 +364,11 @@ ok:
}
}
-#define CHECK_ERR
- if (ret != REG_OK)
- {
- errcode = REG_BADPAT;
- goto err2;
+#define CHECK_ERR \
+ if (ret != REG_OK) \
+ { \
+ errcode = REG_BADPAT; \
+ goto err2; \
}
ret = tre_compile_fast(h->heurs[0], arr[0], length[0], 0);
@@ -381,7 +382,7 @@ ok:
else
ret = tre_compile_fast(h->heurs[1], arr[m], length[m], 0);
CHECK_ERR
- if (h->prefix)
+ if (h->prefix || (m == j - 1))
{
xfree(h->heurs[2]);
h->heurs[2] = NULL;
More information about the svn-src-user
mailing list