From: Emeric Brun Date: Mon, 3 Nov 2014 17:17:10 +0000 (+0100) Subject: BUG/MINOR: samples: fix unnecessary memcopy converting binary to string. X-Git-Tag: v1.6-dev1~262 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4b9e80268ec15f6f3db85e53a5ab9c6dbf920264;p=thirdparty%2Fhaproxy.git BUG/MINOR: samples: fix unnecessary memcopy converting binary to string. --- diff --git a/src/sample.c b/src/sample.c index 70f47bbd22..7db506d0a8 100644 --- a/src/sample.c +++ b/src/sample.c @@ -499,27 +499,20 @@ static int c_str2ipv6(struct sample *smp) return 1; } -/* The sample is always copied into a new one so that smp->size is always - * valid. The NULL char always enforces the end of string if it is met. +/* + * The NULL char always enforces the end of string if it is met. + * Data is never changed, so we can ignore the CONST case */ static int c_bin2str(struct sample *smp) { - struct chunk *trash = get_trash_chunk(); - unsigned char c; - int ptr = 0; + int i; - while (ptr < smp->data.str.len) { - c = smp->data.str.str[ptr]; - if (!c) + for (i = 0; i < smp->data.str.len; i++) { + if (!smp->data.str.str[i]) { + smp->data.str.len = i; break; - trash->str[ptr] = c; - ptr++; + } } - trash->len = ptr; - trash->str[ptr] = 0; - smp->data.str = *trash; - smp->type = SMP_T_STR; - smp->flags &= ~SMP_F_CONST; return 1; }