From 4b9e80268ec15f6f3db85e53a5ab9c6dbf920264 Mon Sep 17 00:00:00 2001 From: Emeric Brun Date: Mon, 3 Nov 2014 18:17:10 +0100 Subject: [PATCH] BUG/MINOR: samples: fix unnecessary memcopy converting binary to string. --- src/sample.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) 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; } -- 2.47.3