diff options
| -rw-r--r-- | src/kv_manager.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/kv_manager.c b/src/kv_manager.c index df95faf..8d2e79f 100644 --- a/src/kv_manager.c +++ b/src/kv_manager.c @@ -106,7 +106,7 @@ bool kv_close_storage() { bool add_b_t_wrapped(char *key, bool state, char type, bool keep_original_type) { datum k, v; int fcall_rc; - char s[2] = { 0, 0 }; + char s[3] = { 0, 0, 0 }; if (key == NULL || key[0] == '\0') { LOGERR("ERROR: No key given.\n"); @@ -126,7 +126,7 @@ bool add_b_t_wrapped(char *key, bool state, char type, bool keep_original_type) if (v.dptr == NULL) { v.dptr = s; - v.dsize = 2; + v.dsize = 3; } v.dptr[0] = (state) ? 'T' : 'F'; @@ -231,11 +231,11 @@ char *kv_get_raw(char *key) { } k.dptr = key; - k.dsize = (int)strlen(key); + k.dsize = (int)strlen(key)+1; v = gdbm_fetch(gdbf, k); - if (gdbm_errno != GDBM_ITEM_NOT_FOUND) { + if (v.dptr == NULL && gdbm_errno != GDBM_ITEM_NOT_FOUND) { LOGERR("ERROR: Failed to fetch value for key '%s': %s\n", key, gdbm_strerror(gdbm_errno)); } @@ -259,7 +259,7 @@ bool kv_entry_exists(char *key) { } k.dptr = key; - k.dsize = (int)strlen(key); + k.dsize = (int)strlen(key)+1; if (gdbm_exists(gdbf, k) == 1) { return true; @@ -300,7 +300,7 @@ char *kv_next_key(char *key) { } k.dptr = key; - k.dsize = (int)strlen(key); + k.dsize = (int)strlen(key)+1; nk = gdbm_nextkey(gdbf, k); |
