Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=4d014adf2b1749785693fcf5d3f2bccb3479ab4a

commit 4d014adf2b1749785693fcf5d3f2bccb3479ab4a
Author: Michel Hermier <[email protected]>
Date:   Tue May 13 11:57:29 2014 +0200

libpacman: Avoid creating a dummy package, when we can simply use the 
refcounting.

diff --git a/lib/libpacman/cache.cpp b/lib/libpacman/cache.cpp
index 4d967c1..89b8dd1 100644
--- a/lib/libpacman/cache.cpp
+++ b/lib/libpacman/cache.cpp
@@ -145,7 +145,7 @@ int _pacman_db_remove_pkgfromcache(Database *db, Package 
*pkg)
}

_pacman_log(PM_LOG_DEBUG, _("removing entry '%s' from '%s' cache"), 
pkg->name(), db->treename);
-       delete data;
+       data->release();

_pacman_db_clear_grpcache(db);

diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index 3980ef5..4f8988a 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -147,7 +147,7 @@ bool Package::set_filename(const char *filename, int 
witharch)

int _pacman_pkg_delete(Package *self)
{
-       delete self;
+       self->release();
return 0;
}

diff --git a/lib/libpacman/trans_sysupgrade.cpp 
b/lib/libpacman/trans_sysupgrade.cpp
index 77c0c8f..e3a0398 100644
--- a/lib/libpacman/trans_sysupgrade.cpp
+++ b/lib/libpacman/trans_sysupgrade.cpp
@@ -107,26 +107,21 @@ int _pacman_trans_sysupgrade(pmtrans_t *trans)
* the package to replace.
*/
pmsyncpkg_t *ps;
-                                                               Package *dummy 
= new Package(lpkg->name(), NULL);
-                                                               if(dummy == 
NULL) {
-                                                                       
pm_errno = PM_ERR_MEMORY;
-                                                                       goto 
error;
-                                                               }
-                                                               
dummy->m_requiredby = _pacman_list_strdup(lpkg->requiredby());
/* check if spkg->name is already in the packages list. */
ps = trans->find(spkg->name());
if(ps) {
/* found it -- just append to the replaces list */
-                                                                       
ps->data = _pacman_list_add(ps->data, dummy);
+                                                                       
lpkg->acquire();
+                                                                       
ps->data = _pacman_list_add(ps->data, lpkg);
} else {
/* none found -- enter pkg into the final sync list */
ps = new __pmsyncpkg_t(PM_SYNC_TYPE_REPLACE, spkg, NULL);
if(ps == NULL) {
-                                                                               
delete dummy;
pm_errno = PM_ERR_MEMORY;
goto error;
}
-                                                                       
ps->data = _pacman_list_add(NULL, dummy);
+                                                                       
lpkg->acquire();
+                                                                       
ps->data = _pacman_list_add(NULL, lpkg);
trans->syncpkgs = _pacman_list_add(trans->syncpkgs, ps);
}
_pacman_log(PM_LOG_FLOW2, _("%s-%s elected for upgrade (to be replaced by 
%s-%s)"),
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to