projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
fix clang build
[m6w6/ext-psi]
/
src
/
types
/
layout.c
diff --git
a/src/types/layout.c
b/src/types/layout.c
index 3c8deaab3f9b7908327db56a45f9f4f2ac4164ec..c462120126f6da61cd3f50d3ebe61154a19f209d 100644
(file)
--- a/
src/types/layout.c
+++ b/
src/types/layout.c
@@
-28,14
+28,15
@@
#include <assert.h>
#include <assert.h>
-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->pos = pos;
l->len = len;
+ l->bfw = bfw;
return l;
}
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) {
void psi_layout_free(struct psi_layout **l_ptr)
{
if (*l_ptr) {
-
free(*l_ptr)
;
+
struct psi_layout *l = *l_ptr
;
*l_ptr = NULL;
*l_ptr = NULL;
+
+ if (l->bfw) {
+ psi_layout_free(&l->bfw);
+ }
+ free(l);
}
}
}
}