diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-11-28 18:36:00 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-11-28 18:36:00 +0100 |
| commit | ac54eceea5774ef9477153d7a9fcf7869e65da2c (patch) | |
| tree | 6df356944f716a603333b659f9ffc6f6ae85b71d /src/tools | |
| parent | e1c29bf2afab47a7f2b06b2313c7c4b344b54814 (diff) | |
| download | box64-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.c | 13 |
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)); } |