aboutsummaryrefslogtreecommitdiff
path: root/lib/dtree.c
diff options
context:
space:
mode:
authorKatharina Fey <kookie@spacekookie.de>2016-08-29 11:03:04 +0200
committerKatharina Fey <kookie@spacekookie.de>2019-06-04 20:21:03 +0200
commita13d78cbd5a7aba4d5ce3f9c81602e6449decd7e (patch)
tree7ca39fb410fdfd55d1441eeba40937df9747c9b1 /lib/dtree.c
parentb7f57ab908d97b6980b5f90fbb8122a0d57cc451 (diff)
- Fixing an issue where the list malloc was of size 0
- Now properly cleaning payload space after type reset - Minor tweaks and improvements
Diffstat (limited to '')
-rw-r--r--lib/dtree.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/dtree.c b/lib/dtree.c
index cb2578d..43213d0 100644
--- a/lib/dtree.c
+++ b/lib/dtree.c
@@ -49,7 +49,6 @@ dt_err dtree_resettype(dtree *data)
dt_err err;
for(i = 0; i < data->size; i++) {
err = dtree_free(data->payload.list[i]);
- memset(data->payload.list[i], 0, sizeof(data->payload.list[i]));
if(err) return err;
}
}
@@ -60,6 +59,9 @@ dt_err dtree_resettype(dtree *data)
data->size = 0;
data->used = 0;
+ /* Forcibly clean union memory to avoid bleeding data */
+ memset(&data->payload, 0, sizeof(data->payload));
+
return SUCCESS;
}
@@ -146,7 +148,7 @@ dt_err dtree_addlist(dtree *data, dtree *(*new_data))
/* This means the data object is new */
} else {
- dtree **tmp = (dtree**) malloc(sizeof(dtree*) * data->size);
+ dtree **tmp = (dtree**) malloc(sizeof(dtree*) * RDB_REC_DEF_SIZE);
data->payload.list = tmp;
data->type = LIST;
data->used = 0;
@@ -157,8 +159,7 @@ dt_err dtree_addlist(dtree *data, dtree *(*new_data))
if(err) return err;
/* Reference the slot, assign it, then move our ctr */
- data->payload.list[data->used] = *new_data;
- data->used++;
+ data->payload.list[data->used++] = *new_data;
return SUCCESS;
}