From 3285b0a86ae136e9ecf6a0b36532365f253be7d9 Mon Sep 17 00:00:00 2001 From: chris mikkelson Date: Fri, 12 Mar 2010 22:41:18 -0600 Subject: [PATCH] Fix usage of pcre_dfa_exec and pcre_copy_substring. --- re_stream.c | 8 ++++---- re_stream.h | 5 ++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/re_stream.c b/re_stream.c index 4c54f1d..4a57355 100644 --- a/re_stream.c +++ b/re_stream.c @@ -71,8 +71,8 @@ re_stream_exec(struct stream_re *sre, char *sub, int slen) } match = pcre_dfa_exec(sre->re, 0, sub, slen, 0, sre->flags | flags, - sre->ovec, sizeof(sre->ovec), - sre->wspace, sizeof(sre->wspace)); + sre->ovec, SRE_OVEC_COUNT, + sre->wspace, SRE_WSPACE_COUNT); if (match < 0 && match != PCRE_ERROR_PARTIAL) { sre->result[0] = sre->rlen = 0; @@ -105,8 +105,8 @@ re_stream_exec(struct stream_re *sre, char *sub, int slen) sre->result = reallocf(sre->result, sre->ralloc); if (!sre->result) return -1; } - pcre_copy_substring(sub, sre->ovec, sizeof(sre->ovec), - 0, sre->result + sre->rlen, + pcre_copy_substring(sub, sre->ovec, match, 0, + sre->result + sre->rlen, sre->ralloc - sre->rlen); sre->rlen = newlen; diff --git a/re_stream.h b/re_stream.h index 2bd413b..411f922 100644 --- a/re_stream.h +++ b/re_stream.h @@ -3,12 +3,15 @@ * All Rights Reserved, for now. */ +#define SRE_OVEC_COUNT 30 +#define SRE_WSPACE_COUNT 50 + /* Stream-based regexp matching layer */ struct stream_re { pcre *re; int rlen, ralloc, flags, state; char *result; - int ovec[30], wspace[50]; + int ovec[SRE_OVEC_COUNT], wspace[SRE_WSPACE_COUNT]; }; struct stream_re *re_stream_start(struct stream_re *, pcre *, int); -- 2.50.1