From f0645dce4f4db48d3b763f5fc4f68de76f89b278 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 9 Aug 2016 14:29:38 +0200 Subject: [PATCH] MINOR: sample: use smp_make_rw() in upper/lower converters There's no point in always duplicating the sample, just ensure it's writable, as was done prior to the smp_dup() change. This should be backported to 1.6 to avoid a performance regression caused by this change (about 30% more time for upper/lower due to the copy). --- src/sample.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/sample.c b/src/sample.c index e0a880ec6..77cbd1bf3 100644 --- a/src/sample.c +++ b/src/sample.c @@ -1474,10 +1474,7 @@ static int sample_conv_str2lower(const struct arg *arg_p, struct sample *smp, vo { int i; - if (!smp_dup(smp)) - return 0; - - if (!smp->data.u.str.size) + if (!smp_make_rw(smp)) return 0; for (i = 0; i < smp->data.u.str.len; i++) { @@ -1491,10 +1488,7 @@ static int sample_conv_str2upper(const struct arg *arg_p, struct sample *smp, vo { int i; - if (!smp_dup(smp)) - return 0; - - if (!smp->data.u.str.size) + if (!smp_make_rw(smp)) return 0; for (i = 0; i < smp->data.u.str.len; i++) {