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

commit 1fe1ffbc50df29ac631d5e57021653a69f93154b
Author: Michel Hermier <[email protected]>
Date:   Thu Aug 14 19:41:59 2014 +0200

libpacman: Use const aliases where possible in _pacman_checkdeps, and fix an 
invalid list match (not detected by testsuite).

diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp
index 7f85af5..264582a 100644
--- a/lib/libpacman/deps.cpp
+++ b/lib/libpacman/deps.cpp
@@ -241,13 +241,15 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned 
char op, pmlist_t *packag
if(pkg_local != NULL) {
found = 0;
for(j = pkg_local->requiredby(); j; j = j->next) {
+                               const char *requiredby_name = 
f_stringlistitem_to_str(j);
+
if(op == PM_TRANS_TYPE_UPGRADE) {
/* PM_TRANS_TYPE_UPGRADE handles the backwards dependencies, ie, the packages
* listed in the requiredby field.
*/
Package *p;

-                                       if((p = 
_pacman_db_get_pkgfromcache(db_local, f_stringlistitem_to_str(j))) == NULL) {
+                                       if((p = 
_pacman_db_get_pkgfromcache(db_local, requiredby_name)) == NULL) {
/* hmmm... package isn't installed.. */
continue;
}
@@ -256,8 +258,10 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned 
char op, pmlist_t *packag
continue;
}
for(k = p->depends(); k; k = k->next) {
+                                               const char *depend_name = 
f_stringlistitem_to_str(k);
+
/* don't break any existing dependencies (possible provides) */
-                                               _pacman_splitdep(k->data, 
&depend);
+                                               _pacman_splitdep(depend_name, 
&depend);
if(_pacman_depcmp(pkg_local, &depend) && !_pacman_depcmp(tp, &depend)) {
_pacman_log(PM_LOG_DEBUG, _("checkdeps: updated '%s' won't satisfy a dependency 
of '%s'"),
pkg_local->name(), p->name());
@@ -268,7 +272,7 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char 
op, pmlist_t *packag
}
} else if(op == PM_TRANS_TYPE_REMOVE) {
/* check requiredby fields */
-                                       if(!_pacman_list_is_strin((char 
*)j->data, packages)) {
+                                       if(!_pacman_pkg_isin(requiredby_name, 
packages)) {
/* check if a package in trans->packages provides this package */
for(k=trans->packages; !found && k; k=k->next) {
Package *spkg = k->data;
@@ -285,8 +289,8 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char 
op, pmlist_t *packag
}
}
if(!found) {
-                                                       
_pacman_log(PM_LOG_DEBUG, _("checkdeps: found %s which requires %s"), (char 
*)j->data, pkg_local->name());
-                                                       miss = new 
__pmdepmissing_t(pkg_local->name(), PM_DEP_TYPE_REQUIRED, PM_DEP_MOD_ANY, 
(const char *)j->data, NULL);
+                                                       
_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);
baddeps = _pacman_depmisslist_add(baddeps, miss);
}
}
@@ -296,8 +300,10 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned 
char op, pmlist_t *packag
if(op == PM_TRANS_TYPE_ADD || op == PM_TRANS_TYPE_UPGRADE) {
/* DEPENDENCIES -- look for unsatisfied dependencies */
for(j = tp->depends(); j; j = j->next) {
+                               const char *depend_name = 
f_stringlistitem_to_str(j);
+
/* split into name/version pairs */
-                               _pacman_splitdep((char *)j->data, &depend);
+                               _pacman_splitdep(depend_name, &depend);
found = 0;
/* check database for literal packages */
for(k = _pacman_db_get_pkgcache(db_local); k && !found; k = k->next) {
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to