Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d8b4639cb94b48a3722ceb140dd96b33113a5cc9
commit d8b4639cb94b48a3722ceb140dd96b33113a5cc9 Author: Michel Hermier <[email protected]> Date: Fri Sep 5 11:53:29 2014 +0200 libpacman: _pacman_depmisslist_add work with references. diff --git a/lib/libpacman/conflict.cpp b/lib/libpacman/conflict.cpp index 17eec45..15eb7e4 100644 --- a/lib/libpacman/conflict.cpp +++ b/lib/libpacman/conflict.cpp @@ -98,7 +98,7 @@ FPtrList _pacman_checkconflicts(pmtrans_t *trans, const FPtrList &packages) _pacman_log(PM_LOG_DEBUG, _("targs vs db: found %s as a conflict for %s"), dp->name(), tp->name()); miss = new __pmdepmissing_t(tp->name(), PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, dp->name(), NULL); - _pacman_depmisslist_add(&baddeps, miss); + _pacman_depmisslist_add(baddeps, miss); } else { /* see if dp provides something in tp's conflict list */ auto &provides = dp->provides(); @@ -108,7 +108,7 @@ FPtrList _pacman_checkconflicts(pmtrans_t *trans, const FPtrList &packages) _pacman_log(PM_LOG_DEBUG, _("targs vs db: found %s as a conflict for %s"), dp->name(), tp->name()); miss = new __pmdepmissing_t(tp->name(), PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, dp->name(), NULL); - _pacman_depmisslist_add(&baddeps, miss); + _pacman_depmisslist_add(baddeps, miss); } } } @@ -126,7 +126,7 @@ FPtrList _pacman_checkconflicts(pmtrans_t *trans, const FPtrList &packages) _pacman_log(PM_LOG_DEBUG, _("targs vs targs: found %s as a conflict for %s"), otp->name(), tp->name()); miss = new __pmdepmissing_t(tp->name(), PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, otp->name(), NULL); - _pacman_depmisslist_add(&baddeps, miss); + _pacman_depmisslist_add(baddeps, miss); } else { /* see if otp provides something in tp's conflict list */ auto &provides = otp->provides(); @@ -135,7 +135,7 @@ FPtrList _pacman_checkconflicts(pmtrans_t *trans, const FPtrList &packages) _pacman_log(PM_LOG_DEBUG, _("targs vs targs: found %s as a conflict for %s"), otp->name(), tp->name()); miss = new __pmdepmissing_t(tp->name(), PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, otp->name(), NULL); - _pacman_depmisslist_add(&baddeps, miss); + _pacman_depmisslist_add(baddeps, miss); } } } @@ -173,7 +173,7 @@ FPtrList _pacman_checkconflicts(pmtrans_t *trans, const FPtrList &packages) _pacman_log(PM_LOG_DEBUG, _("db vs targs: found %s as a conflict for %s"), info->name(), tp->name()); miss = new __pmdepmissing_t(tp->name(), PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, info->name(), NULL); - _pacman_depmisslist_add(&baddeps, miss); + _pacman_depmisslist_add(baddeps, miss); } else { /* see if the db package conflicts with something we provide */ for(auto m = conflicts->begin(), m_end = conflicts->end(); m != m_end; m = m->next()) { @@ -183,7 +183,7 @@ FPtrList _pacman_checkconflicts(pmtrans_t *trans, const FPtrList &packages) _pacman_log(PM_LOG_DEBUG, _("db vs targs: found %s as a conflict for %s"), info->name(), tp->name()); miss = new __pmdepmissing_t(tp->name(), PM_DEP_TYPE_CONFLICT, PM_DEP_MOD_ANY, info->name(), NULL); - _pacman_depmisslist_add(&baddeps, miss); + _pacman_depmisslist_add(baddeps, miss); } } } diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp index 7ed433a..37a5dc9 100644 --- a/lib/libpacman/deps.cpp +++ b/lib/libpacman/deps.cpp @@ -86,10 +86,10 @@ int _pacman_depmiss_isin(pmdepmissing_t *needle, FPtrList *haystack) return(0); } -FPtrList *_pacman_depmisslist_add(FPtrList *misslist, pmdepmissing_t *miss) +FPtrList &_pacman_depmisslist_add(FPtrList &misslist, pmdepmissing_t *miss) { - if(!_pacman_depmiss_isin(miss, misslist)) { - misslist = misslist->add(miss); + if(!_pacman_depmiss_isin(miss, &misslist)) { + misslist.add(miss); } else { delete miss; } @@ -263,7 +263,7 @@ FPtrList _pacman_checkdeps(pmtrans_t *trans, unsigned char op, const FPtrList &p pkg_local->name(), p->name()); miss = new __pmdepmissing_t(p->name(), PM_DEP_TYPE_DEPEND, depend.mod, depend.name, depend.version); - _pacman_depmisslist_add(&baddeps, miss); + _pacman_depmisslist_add(baddeps, miss); } } } else if(op == PM_TRANS_TYPE_REMOVE) { @@ -287,7 +287,7 @@ FPtrList _pacman_checkdeps(pmtrans_t *trans, unsigned char op, const FPtrList &p if(!found) { _pacman_log(PM_LOG_DEBUG, _("checkdeps: found %s which requires %s"), requiredby_name, pkg_local->name()); miss = new __pmdepmissing_t(pkg_local->name(), PM_DEP_TYPE_REQUIRED, PM_DEP_MOD_ANY, requiredby_name, NULL); - _pacman_depmisslist_add(&baddeps, miss); + _pacman_depmisslist_add(baddeps, miss); } } } @@ -414,7 +414,7 @@ FPtrList _pacman_checkdeps(pmtrans_t *trans, unsigned char op, const FPtrList &p _pacman_log(PM_LOG_DEBUG, _("checkdeps: found %s as a dependency for %s"), depend.name, tp->name()); miss = new __pmdepmissing_t(tp->name(), PM_DEP_TYPE_DEPEND, depend.mod, depend.name, depend.version); - _pacman_depmisslist_add(&baddeps, miss); + _pacman_depmisslist_add(baddeps, miss); } } } diff --git a/lib/libpacman/deps.h b/lib/libpacman/deps.h index c7dd218..52ec1d7 100644 --- a/lib/libpacman/deps.h +++ b/lib/libpacman/deps.h @@ -49,7 +49,7 @@ typedef struct __pmgraph_t { FPtrListIterator *childptr; /* points to a child in children list */ } pmgraph_t; -FPtrList *_pacman_depmisslist_add(FPtrList *misslist, pmdepmissing_t *miss); +FPtrList &_pacman_depmisslist_add(FPtrList &misslist, pmdepmissing_t *miss); FPtrList _pacman_sortbydeps(const FPtrList &targets, int mode); FPtrList _pacman_checkdeps(pmtrans_t *trans, unsigned char op, const FPtrList &packages); _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
