X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftal%2Ftal.c;h=dff0dcfba2058b0815f79423c0798af9b806fb67;hb=9d2d2c49f053018724bcc6e37029da10b7c3d60d;hp=f6e2ee797c3e251dae5033bd928e7a61995b2fe6;hpb=d3d2242ba8d975f8d7ddaa0348953dfd6f45ffce;p=ccan diff --git a/ccan/tal/tal.c b/ccan/tal/tal.c index f6e2ee79..dff0dcfb 100644 --- a/ccan/tal/tal.c +++ b/ccan/tal/tal.c @@ -385,6 +385,8 @@ static void del_tree(struct tal_hdr *t, const tal_t *orig, int saved_errno) { struct prop_hdr **prop, *p, *next; + assert(!taken(from_tal_hdr(t))); + /* Already being destroyed? Don't loop. */ if (unlikely(get_destroying_bit(t->parent_child))) return; @@ -710,6 +712,10 @@ bool tal_resize_(tal_t **ctxp, size_t size, size_t count, bool clear) /* Fix up linked list pointers. */ t->list.next->prev = t->list.prev->next = &t->list; + /* Copy take() property. */ + if (taken(from_tal_hdr(old_t))) + take(from_tal_hdr(t)); + /* Fix up child property's parent pointer. */ child = find_property(t, CHILDREN); if (child) {