summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Walter <stefw@src.gnome.org>2007-12-01 19:11:08 +0000
committerStefan Walter <stefw@src.gnome.org>2007-12-01 19:11:08 +0000
commit14c03856d16a04737bcdb74d7acb2af882b7fec1 (patch)
tree3c07862a3869d084ca7fa540f42a1f518d9a12f3
parent9205fc361c54ef83c8dea1b1a8e4b0ede7d9e3af (diff)
downloadgnome-keyring-14c03856d16a04737bcdb74d7acb2af882b7fec1.tar.gz
Fix object finalizing bugs.
* pk/gkr-pk-object-manager.c: * pk/gkr-pk-object-storage.c: * pk/gkr-pk-pubkey.c: Fix object finalizing bugs. svn path=/trunk/; revision=923
-rw-r--r--ChangeLog4
-rw-r--r--pk/gkr-pk-object-manager.c2
-rw-r--r--pk/gkr-pk-object-storage.c5
-rw-r--r--pk/gkr-pk-pubkey.c4
4 files changed, 11 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 21f4728a..c7f29b61 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2007-12-01 Stef Walter <stef@memberwebs.com>
+ * pk/gkr-pk-object-manager.c:
+ * pk/gkr-pk-object-storage.c:
+ * pk/gkr-pk-pubkey.c: Fix object finalizing bugs.
+
* pk/gkr-pk-index.c:
* pk/gkr-pk-object-storage.c: Store index files in *.keystore, and
look for keys/certificates in ~/.gnome2/keystore
diff --git a/pk/gkr-pk-object-manager.c b/pk/gkr-pk-object-manager.c
index cd4538e6..db537d73 100644
--- a/pk/gkr-pk-object-manager.c
+++ b/pk/gkr-pk-object-manager.c
@@ -285,7 +285,7 @@ gkr_pk_object_manager_unregister (GkrPkObjectManager *objmgr, GkrPkObject *objec
g_return_if_fail (GKR_IS_PK_OBJECT (object));
pv = GKR_PK_OBJECT_MANAGER_GET_PRIVATE (objmgr);
- g_return_if_fail (object->manager != objmgr);
+ g_return_if_fail (object->manager == objmgr);
g_return_if_fail (object->unique);
remove_object_at_unique (objmgr, object->unique);
diff --git a/pk/gkr-pk-object-storage.c b/pk/gkr-pk-object-storage.c
index 3686f6ea..c14cc545 100644
--- a/pk/gkr-pk-object-storage.c
+++ b/pk/gkr-pk-object-storage.c
@@ -217,6 +217,7 @@ add_object (GkrPkObjectStorage *storage, GkrPkObject *object)
gpointer k;
g_assert (object);
+ g_assert (GKR_IS_PK_OBJECT (object));
g_assert (object->location);
g_assert (!g_hash_table_lookup (pv->objects, object));
@@ -239,6 +240,7 @@ remove_object (GkrPkObjectStorage *storage, GkrPkObject *object)
gpointer k;
g_assert (object);
+ g_assert (GKR_IS_PK_OBJECT (object));
g_assert (object->location);
g_assert (g_hash_table_lookup (pv->objects, object));
@@ -422,7 +424,6 @@ location_remove (GkrLocationWatch *watch, GQuark loc, GkrPkObjectStorage *storag
{
GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (storage);
GArray *objs, *copy;
- GkrPkObject *object;
gpointer k;
guint i;
@@ -439,7 +440,7 @@ location_remove (GkrLocationWatch *watch, GQuark loc, GkrPkObjectStorage *storag
copy = g_array_sized_new (FALSE, FALSE, sizeof (GkrPkObject*), objs->len);
g_array_append_vals (copy, objs->data, objs->len);
for (i = 0; i < copy->len; ++i)
- remove_object (storage, object);
+ remove_object (storage, g_array_index (copy, GkrPkObject*, i));
g_array_free (copy, TRUE);
}
diff --git a/pk/gkr-pk-pubkey.c b/pk/gkr-pk-pubkey.c
index 9ed8c007..abdfe584 100644
--- a/pk/gkr-pk-pubkey.c
+++ b/pk/gkr-pk-pubkey.c
@@ -490,7 +490,9 @@ gkr_pk_pubkey_instance (GkrPkObjectManager *manager, GQuark location, gcry_sexp_
return GKR_PK_PUBKEY (pub);
}
- return GKR_PK_PUBKEY (gkr_pk_pubkey_new (location, s_key));
+ pub = gkr_pk_pubkey_new (location, s_key);
+ gkr_pk_object_manager_register (manager, pub);
+ return GKR_PK_PUBKEY (pub);
}
gkrconstunique