X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Ftypes%2Flayout.c;h=1a7dcb644a3ca3dd7aa60bc8f600326d78d1ddb7;hp=3c8deaab3f9b7908327db56a45f9f4f2ac4164ec;hb=02e801eabbe26a129ea05e6723c94e10bb653dab;hpb=9bcb1df0786a8193d65949c857baaba2f4296e84 diff --git a/src/types/layout.c b/src/types/layout.c index 3c8deaa..1a7dcb6 100644 --- a/src/types/layout.c +++ b/src/types/layout.c @@ -28,14 +28,15 @@ #include -struct psi_layout *psi_layout_init(size_t pos, size_t len) +struct psi_layout *psi_layout_init(size_t pos, size_t len, struct psi_layout *bfw) { struct psi_layout *l = calloc(1, sizeof(*l)); - assert(pos + len); + assert(pos + len + (intptr_t) bfw); l->pos = pos; l->len = len; + l->bfw = bfw; return l; } @@ -43,8 +44,13 @@ struct psi_layout *psi_layout_init(size_t pos, size_t len) void psi_layout_free(struct psi_layout **l_ptr) { if (*l_ptr) { - free(*l_ptr); + struct psi_layout *l = *l_ptr; *l_ptr = NULL; + + if (l->bfw) { + psi_layout_free(&l->bfw); + } + free(l); } }