From: Jan Kiszka <
jan.k...@siemens.com>
By using one indirection too much, we overwrote after the first element
pgci with the next element before freeing it. Let's just remove the
additional indirection, it's not needed.
Signed-off-by: Jan Kiszka <
jan.k...@siemens.com>
---
env/env_api.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/env/env_api.c b/env/env_api.c
index 16de319..4fa759d 100644
--- a/env/env_api.c
+++ b/env/env_api.c
@@ -269,22 +269,21 @@ int ebg_env_finalize_update(ebgenv_t *e)
return EIO;
}
- GC_ITEM **pgci, *tmp;
+ GC_ITEM *pgci, *tmp;
uint8_t *udata;
- pgci = (GC_ITEM **)&e->gc_registry;
+ pgci = (GC_ITEM *)e->gc_registry;
udata = ((BGENV *)e->bgenv)->data->userdata;
- while (*pgci) {
+ while (pgci) {
uint8_t *var;
- var = bgenv_find_uservar(udata, (*pgci)->key);
+ var = bgenv_find_uservar(udata, pgci->key);
if (var) {
bgenv_del_uservar(udata, var);
}
- free((*pgci)->key);
- tmp = (*pgci)->next;
- free(*pgci);
- *pgci = NULL;
- pgci = &tmp;
+ free(pgci->key);
+ tmp = pgci->next;
+ free(pgci);
+ pgci = tmp;
}
((BGENV *)e->bgenv)->data->in_progress = 0;
--
2.26.2