From ac54eceea5774ef9477153d7a9fcf7869e65da2c Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Mon, 28 Nov 2022 18:36:00 +0100 Subject: Fixed an issue when an entry is found 2 times in RCFiles --- src/tools/rcfile.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/tools/rcfile.c b/src/tools/rcfile.c index 9ea85a1a..1622e32b 100644 --- a/src/tools/rcfile.c +++ b/src/tools/rcfile.c @@ -183,15 +183,14 @@ static void clearParam(my_params_t* param) static void addParam(const char* name, my_params_t* param) { khint_t k; - int ret; k = kh_get(params, params, name); - const char* oldkey = (k!=kh_end(params))?kh_key(params, k):NULL; - k = kh_put(params, params, strdup(name), &ret); + if(k==kh_end(params)) { + int ret; + k = kh_put(params, params, strdup(name), &ret); + } else { + clearParam(&kh_value(params, k)); + } my_params_t *p = &kh_value(params, k); - if(!ret) - clearParam(p); - if(oldkey) - free((void*)oldkey); memcpy(p, param, sizeof(my_params_t)); } -- cgit 1.4.1