Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=4fb146dce6712b938142402778d335d98a75cb13
commit 4fb146dce6712b938142402778d335d98a75cb13 Author: Michel Hermier <[email protected]> Date: Thu May 15 13:21:32 2014 +0200 libpacman: Remove oldpkg dummy package copy in __pmtrans_t::commit. diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp index b98256b..1cdd9cf 100644 --- a/lib/libpacman/trans.cpp +++ b/lib/libpacman/trans.cpp @@ -1767,7 +1767,6 @@ int __pmtrans_t::commit(pmlist_t **data) int __pmtrans_t::commit(pmtranstype_t type, pmlist_t **data) { Database *db_local; - Package *pkg_new, *pkg_local; int howmany, remain; pmlist_t *targ, *lp; char pm_install[PATH_MAX]; @@ -1797,7 +1796,8 @@ int __pmtrans_t::commit(pmtranstype_t type, pmlist_t **data) howmany = _pacman_list_count(packages); for(targ = packages; targ; targ = targ->next) { - Package *oldpkg = NULL; + Package *pkg_new = NULL, *pkg_local = NULL; + remain = _pacman_list_count(targ); if(handle->trans->state == STATE_INTERRUPTED) { @@ -1806,7 +1806,6 @@ int __pmtrans_t::commit(pmtranstype_t type, pmlist_t **data) if(type & PM_TRANS_TYPE_ADD) { pkg_new = (Package *)targ->data; - pkg_local = NULL; type = this->type; @@ -1825,29 +1824,24 @@ int __pmtrans_t::commit(pmtranstype_t type, pmlist_t **data) _pacman_log(PM_LOG_FLOW1, _("upgrading package %s-%s"), pkg_new->name(), pkg_new->version()); /* we'll need to save some record for backup checks later */ - oldpkg = new Package(pkg_local->name(), pkg_local->version()); - if(oldpkg) { + pkg_local->acquire(); if(!(pkg_local->flags & INFRQ_FILES)) { _pacman_log(PM_LOG_DEBUG, _("loading FILES info for '%s'"), pkg_local->name()); pkg_local->read(INFRQ_FILES); } - oldpkg->m_backup = _pacman_list_strdup(pkg_local->m_backup); - strncpy(oldpkg->m_name, pkg_local->name(), PKG_NAME_LEN); - strncpy(oldpkg->m_version, pkg_local->version(), PKG_VERSION_LEN); - } } else { _pacman_log(PM_LOG_FLOW1, _("adding package %s-%s"), pkg_new->name(), pkg_new->version()); } if(pkg_new->scriptlet && !(flags & PM_TRANS_FLAG_NOSCRIPTLET)) { - _pacman_runscriptlet(handle->root, pkg_new->path(), trans_event_table[type].pre.hook, pkg_new->version(), oldpkg ? oldpkg->version() : NULL, this); + _pacman_runscriptlet(handle->root, pkg_new->path(), trans_event_table[type].pre.hook, pkg_new->version(), pkg_local ? pkg_local->version() : NULL, this); } - if(oldpkg) { + if(pkg_local) { pmtrans_t *tr; pmtrans_cbs_t null_cbs = { NULL }; - _pacman_log(PM_LOG_FLOW1, _("removing old package first (%s-%s)"), oldpkg->name(), oldpkg->version()); + _pacman_log(PM_LOG_FLOW1, _("removing old package first (%s-%s)"), pkg_local->name(), pkg_local->version()); tr = new __pmtrans_t(PM_TRANS_TYPE_UPGRADE, flags, null_cbs); if(tr == NULL) { RET_ERR(PM_ERR_TRANS_ABORT, -1); @@ -1868,7 +1862,7 @@ int __pmtrans_t::commit(pmtranstype_t type, pmlist_t **data) } if(!(this->flags & PM_TRANS_FLAG_DBONLY)) { - int errors = _pacman_fpmpackage_install(pkg_new, type, this, trans_event_table[type].pre.event, howmany, remain, oldpkg); + int errors = _pacman_fpmpackage_install(pkg_new, type, this, trans_event_table[type].pre.event, howmany, remain, pkg_local); if(errors) { ret = 1; @@ -1961,12 +1955,14 @@ int __pmtrans_t::commit(pmtranstype_t type, pmlist_t **data) /* must run ldconfig here because some scriptlets fail due to missing libs otherwise */ _pacman_ldconfig(handle->root); snprintf(pm_install, PATH_MAX, "%s%s/%s/%s-%s/install", handle->root, handle->dbpath, db_local->treename, pkg_new->name(), pkg_new->version()); - _pacman_runscriptlet(handle->root, pm_install, trans_event_table[type].post.hook, pkg_new->version(), oldpkg ? oldpkg->version() : NULL, this); + _pacman_runscriptlet(handle->root, pm_install, trans_event_table[type].post.hook, pkg_new->version(), pkg_local ? pkg_local->version() : NULL, this); } - EVENT(this, trans_event_table[type].post.event, pkg_new, oldpkg); + EVENT(this, trans_event_table[type].post.event, pkg_new, pkg_local); - delete oldpkg; + if (pkg_local) { + pkg_local->release(); + } } if(type == PM_TRANS_TYPE_REMOVE) { pkg_local = (Package*)targ->data; _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
