[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] qom: Make object_unref() free the object's memory w
From: |
alexander_barabash |
Subject: |
[Qemu-devel] [PATCH] qom: Make object_unref() free the object's memory when refcount goes to 0. |
Date: |
Wed, 22 Feb 2012 20:00:50 +0200 |
From: Alexander Barabash <address@hidden>
In the existing implementation, object_delete()
calls object_unref(), then frees the object's storage.
Running object_delete() on an object with reference count
different from 1 causes program failure.
In the existing implementation, object_unref()
finalizes the object when its reference count becomes 0.
In the new implementation, object_unref()
finalizes and frees the object's storage when the reference count becomes 0.
In the new implementation, object_delete()
just calls object_unref().
Running object_delete() on an object with reference count
different from 1 still causes program failure.
Signed-off-by: Alexander Barabash <address@hidden>
---
qom/object.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/qom/object.c b/qom/object.c
index e6591e1..8d36a9c 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -373,9 +373,8 @@ Object *object_new(const char *typename)
void object_delete(Object *obj)
{
+ g_assert(obj->ref == 1);
object_unref(obj);
- g_assert(obj->ref == 0);
- g_free(obj);
}
static bool type_is_ancestor(TypeImpl *type, TypeImpl *target_type)
@@ -585,6 +584,7 @@ void object_unref(Object *obj)
/* parent always holds a reference to its children */
if (obj->ref == 0) {
object_finalize(obj);
+ g_free(obj);
}
}
--
1.7.5.4
- [Qemu-devel] [PATCH] qom: Make object_unref() free the object's memory when refcount goes to 0.,
alexander_barabash <=