Blob Blame History Raw
From b5a499ec7c34ea32f4ba379ec2b7cd352fe4c2d3 Mon Sep 17 00:00:00 2001
From: Richard Hughes <richard@hughsie.com>
Date: Thu, 9 May 2013 15:45:25 +0100
Subject: [PATCH] Ensure the package is removed from the sack properly

We have to remove the package from the array itself, and the hash cache.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=960081
---
 lib/packagekit-glib2/pk-package-sack.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/lib/packagekit-glib2/pk-package-sack.c b/lib/packagekit-glib2/pk-package-sack.c
index 94d02c3..59e47fb 100644
--- a/lib/packagekit-glib2/pk-package-sack.c
+++ b/lib/packagekit-glib2/pk-package-sack.c
@@ -445,6 +445,7 @@ pk_package_sack_remove_package (PkPackageSack *sack, PkPackage *package)
 	g_return_val_if_fail (PK_IS_PACKAGE (package), FALSE);
 
 	/* remove from array */
+	g_hash_table_remove (sack->priv->table, pk_package_get_id (package));
 	ret = g_ptr_array_remove (sack->priv->array, package);
 
 	return ret;
@@ -467,7 +468,6 @@ pk_package_sack_remove_package_by_id (PkPackageSack *sack,
 				      const gchar *package_id)
 {
 	PkPackage *package;
-	const gchar *id;
 	gboolean ret = FALSE;
 	guint i;
 	GPtrArray *array;
@@ -478,9 +478,8 @@ pk_package_sack_remove_package_by_id (PkPackageSack *sack,
 	array = sack->priv->array;
 	for (i = 0; i < array->len; i++) {
 		package = g_ptr_array_index (array, i);
-		id = pk_package_get_id (package);
-		if (g_strcmp0 (package_id, id) == 0) {
-			g_ptr_array_remove_index (array, i);
+		if (g_strcmp0 (package_id, pk_package_get_id (package)) == 0) {
+			pk_package_sack_remove_package (sack, package);
 			ret = TRUE;
 			break;
 		}
-- 
1.8.2.1