diff options
author | Daniel P. Berrange <berrange@redhat.com> | 2010-08-13 13:22:40 -0400 |
---|---|---|
committer | Daniel P. Berrange <berrange@redhat.com> | 2010-08-25 15:25:30 +0100 |
commit | 4c427ba3b30442d5f9f8b7f321f243704455d66a (patch) | |
tree | 543b22f2c71f1b094b50ab83cea998ffe9c53d23 /osinfo | |
parent | 5b91c4f6f19eb76e1b0a864fe3eb122ebb832bd5 (diff) | |
download | libosinfo-4c427ba3b30442d5f9f8b7f321f243704455d66a.tar.gz |
Remove 'db' property from entity object to avoid circular reference
The OsinfoDb object holds a reference to every OsinfoEntity.
If the OsinfoEntity also holds a back-reference to OsinfoDb
then no memory will ever be freed. The back-reference is
not used in the code, so just remove it
* osinfo/osinfo_common.h, osinfo/osinfo_dataread.c,
osinfo/osinfo_entity.c: Remove back-reference to the
OsinfoDb object from OsinfoEntity
Diffstat (limited to 'osinfo')
-rw-r--r-- | osinfo/osinfo_common.h | 2 | ||||
-rw-r--r-- | osinfo/osinfo_dataread.c | 6 | ||||
-rw-r--r-- | osinfo/osinfo_entity.c | 14 |
3 files changed, 3 insertions, 19 deletions
diff --git a/osinfo/osinfo_common.h b/osinfo/osinfo_common.h index 7be6fd9..b7ff223 100644 --- a/osinfo/osinfo_common.h +++ b/osinfo/osinfo_common.h @@ -184,8 +184,6 @@ struct _OsinfoEntityPrivate // Key: gchar* // Value: Array of gchar* values for key (multiple values allowed) GTree *params; - - OsinfoDb *db; // Backpointer to db object }; /** **************************************************************************** diff --git a/osinfo/osinfo_dataread.c b/osinfo/osinfo_dataread.c index 4c8c665..8e4183c 100644 --- a/osinfo/osinfo_dataread.c +++ b/osinfo/osinfo_dataread.c @@ -433,7 +433,7 @@ static int __osinfoProcessOs(OsinfoDb *db, if (!id) return -EINVAL; - os = g_object_new(OSINFO_TYPE_OS, "id", id, "db", db, NULL); + os = g_object_new(OSINFO_TYPE_OS, "id", id, NULL); free(id); if (empty) @@ -552,7 +552,7 @@ static int __osinfoProcessHypervisor(OsinfoDb *db, return -EINVAL; - hv = g_object_new(OSINFO_TYPE_HYPERVISOR, "id", id, "db", db, NULL); + hv = g_object_new(OSINFO_TYPE_HYPERVISOR, "id", id, NULL); free(id); if (empty) @@ -659,7 +659,7 @@ static int __osinfoProcessDevice(OsinfoDb *db, if (!id) return -EINVAL; - dev = g_object_new(OSINFO_TYPE_DEVICE, "id", id, "db", db, NULL); + dev = g_object_new(OSINFO_TYPE_DEVICE, "id", id, NULL); free(id); if (empty) diff --git a/osinfo/osinfo_entity.c b/osinfo/osinfo_entity.c index 0fd8c59..dce265a 100644 --- a/osinfo/osinfo_entity.c +++ b/osinfo/osinfo_entity.c @@ -10,7 +10,6 @@ enum OSI_ENTITY_PROPERTIES { OSI_ENTITY_PROP_0, OSI_ENTITY_ID, - OSI_DB_PTR }; static void @@ -27,9 +26,6 @@ osinfo_entity_set_property (GObject *object, g_free(self->priv->id); self->priv->id = g_value_dup_string (value); break; - case OSI_DB_PTR: - self->priv->db = g_value_get_pointer (value); - break; default: /* We don't have any other property... */ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -50,9 +46,6 @@ osinfo_entity_get_property (GObject *object, case OSI_ENTITY_ID: g_value_set_string (value, self->priv->id); break; - case OSI_DB_PTR: - g_value_set_pointer(value, self->priv->db); - break; default: /* We don't have any other property... */ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -90,13 +83,6 @@ osinfo_entity_class_init (OsinfoEntityClass *klass) g_object_class_install_property (g_klass, OSI_ENTITY_ID, pspec); - pspec = g_param_spec_pointer ("db", - "Db pointer", - "Contains backpointer to libosinfo db object.", - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE); - g_object_class_install_property (g_klass, - OSI_DB_PTR, - pspec); g_klass->finalize = osinfo_entity_finalize; g_type_class_add_private (klass, sizeof (OsinfoEntityPrivate)); |