By convenience or laziness we used to store exp_replace()'s return code
into str->data. The result checks applied there compare str->data to -1
while it's now unsigned since commit
843b7cb ("MEDIUM: chunks: make the
chunk struct's fields match the buffer struct"). Let's clean this up
and test the result itself without storing it first.
No backport is needed.
/* In the regm case, merge the sample with the input. */
if ((long)private == PAT_MATCH_REGM) {
struct buffer *tmptrash;
+ int len;
/* Copy the content of the sample because it could
be scratched by incoming get_trash_chunk */
tmptrash->area[tmptrash->data] = 0;
str = get_trash_chunk();
- str->data = exp_replace(str->area, str->size,
- tmptrash->area,
- pat->data->u.str.area,
- (regmatch_t *)smp->ctx.a[0]);
- if (str->data == -1)
+ len = exp_replace(str->area, str->size,
+ tmptrash->area,
+ pat->data->u.str.area,
+ (regmatch_t *)smp->ctx.a[0]);
+ if (len == -1)
return 0;
+
+ str->data = len;
smp->data.u.str = *str;
return 1;
}