X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Flayout.c;fp=src%2Ftypes%2Flayout.c;h=1a7dcb644a3ca3dd7aa60bc8f600326d78d1ddb7;hb=b09850fb2c28c23547fed5ac83faf0fa2d3e6b8b;hp=3c8deaab3f9b7908327db56a45f9f4f2ac4164ec;hpb=370510d04a5e22140e1e7f90f5d1f0002e6dbee6;p=m6w6%2Fext-psi 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); } }