From: chris mikkelson Date: Sat, 13 Mar 2010 04:41:18 +0000 (-0600) Subject: Fix usage of pcre_dfa_exec and pcre_copy_substring. X-Git-Url: https://git.mikk.net/?a=commitdiff_plain;h=3285b0a86ae136e9ecf6a0b36532365f253be7d9;p=liburl Fix usage of pcre_dfa_exec and pcre_copy_substring. --- 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);