From 449274903ca8f8c8227059698a9324d55167396b Mon Sep 17 00:00:00 2001 From: Glenn Strauss Date: Fri, 23 Nov 2018 01:19:14 -0500 Subject: [PATCH] [core] perf: simplify buffer_move() require src and dest to be non-NULL change no longer releases large swapped buffers with buffer_reset() --- src/buffer.c | 10 +++------- src/configparser.y | 6 ++++-- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/buffer.c b/src/buffer.c index 4e6b3a1c..e7a71f62 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -66,14 +66,10 @@ void buffer_reset(buffer *b) { void buffer_move(buffer *b, buffer *src) { buffer tmp; + force_assert(NULL != b); + force_assert(NULL != src); - if (NULL == b) { - buffer_reset(src); - return; - } - buffer_reset(b); - if (NULL == src) return; - + buffer_clear(b); tmp = *src; *src = *b; *b = tmp; } diff --git a/src/configparser.y b/src/configparser.y index e7b67ef5..9e49ad73 100644 --- a/src/configparser.y +++ b/src/configparser.y @@ -317,9 +317,11 @@ value(A) ::= key(B). { } value(A) ::= STRING(B). { + buffer *b; A = (data_unset *)data_string_init(); - buffer_move(((data_string *)(A))->value, B); - buffer_free(B); + b = ((data_string *)(A))->value; + buffer_free(b); + ((data_string *)(A))->value = B; B = NULL; }