From 5302370d9c743b4a1c726aab72e17aff4728ff84 Mon Sep 17 00:00:00 2001 From: Guo Rui Date: Tue, 21 Jul 2009 00:22:12 +0800 Subject: [PATCH] Fix freeing broker. --- src/script.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/script.c b/src/script.c index ce035cb..c0473f7 100644 --- a/src/script.c +++ b/src/script.c @@ -368,13 +368,20 @@ get_obj_broker(void *obj) void * get_broker_obj(struct broker *broker) { + if (!broker) + return NULL; + if (broker->valid) return broker->obj; if (--broker->ref == 0) { - struct broker **b = broker_from_obj(broker->obj); - Free(b); + struct broker *n, **b = broker_from_obj(broker->obj); + if (*b) { + n = (*b)->b_next; + free(*b); + *b = n; + } } return NULL; } -- 2.11.4.GIT