about summary refs log tree commit diff stats
path: root/src/tools
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-11-28 18:36:00 +0100
committerptitSeb <sebastien.chev@gmail.com>2022-11-28 18:36:00 +0100
commitac54eceea5774ef9477153d7a9fcf7869e65da2c (patch)
tree6df356944f716a603333b659f9ffc6f6ae85b71d /src/tools
parente1c29bf2afab47a7f2b06b2313c7c4b344b54814 (diff)
downloadbox64-ac54eceea5774ef9477153d7a9fcf7869e65da2c.tar.gz
box64-ac54eceea5774ef9477153d7a9fcf7869e65da2c.zip
Fixed an issue when an entry is found 2 times in RCFiles
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/rcfile.c13
1 files 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));
 }