aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/kv_manager.c12
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);