X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Flayout.c;h=a458c77d54db95bd57339ab2aea677ace3683d17;hb=698841dfdd4d70d24e0b7af25ac7100bc2cb26a4;hp=3c8deaab3f9b7908327db56a45f9f4f2ac4164ec;hpb=9bcb1df0786a8193d65949c857baaba2f4296e84;p=m6w6%2Fext-psi diff --git a/src/types/layout.c b/src/types/layout.c index 3c8deaa..a458c77 100644 --- a/src/types/layout.c +++ b/src/types/layout.c @@ -23,19 +23,24 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ -#include "php_psi_stdinc.h" +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# include "php_config.h" +#endif #include "data.h" #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)); + struct psi_layout *l = pecalloc(1, sizeof(*l), 1); - assert(pos + len); + assert(pos + len + (intptr_t) bfw); l->pos = pos; l->len = len; + l->bfw = bfw; return l; } @@ -43,8 +48,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); } }