}
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;
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;
* 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);