diff options
author | Katharina Fey <kookie@spacekookie.de> | 2016-08-29 11:03:04 +0200 |
---|---|---|
committer | Katharina Fey <kookie@spacekookie.de> | 2019-06-04 20:21:03 +0200 |
commit | a13d78cbd5a7aba4d5ce3f9c81602e6449decd7e (patch) | |
tree | 7ca39fb410fdfd55d1441eeba40937df9747c9b1 /lib/dtree.c | |
parent | b7f57ab908d97b6980b5f90fbb8122a0d57cc451 (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.c | 9 |
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; } |