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

Reply via email to