Index: depends.c =================================================================== RCS file: /cvs/devel/rpm/lib/depends.c,v retrieving revision 1.325.2.78 diff -u -b -B -w -p -r1.325.2.78 depends.c --- rpm/lib/depends.c 16 May 2007 11:47:44 -0000 1.325.2.78 +++ rpm/lib/depends.c 22 May 2007 11:41:02 -0000 @@ -1264,12 +1264,12 @@ static int checkPackageDeps(rpmts ts, co * Adding: check name/provides dep against each conflict match, * Erasing: check name/provides/filename dep against each requiredby match. * @param ts transaction set - * @param dep dependency name + * @param depName dependency name * @param mi rpm database iterator * @param adding dependency is from added package set? * @return 0 no problems found */ -static int checkPackageSet(rpmts ts, const char * dep, +static int checkPackageSet(rpmts ts, const char * depName, /*@only@*/ /*@null@*/ rpmdbMatchIterator mi, int adding) /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ /*@modifies ts, mi, rpmGlobalMacroContext, fileSystem, internalState @*/ @@ -1307,7 +1307,7 @@ static int checkPackageSet(rpmts ts, con rc = checkPackageDeps(ts, pkgNEVRA, requires, conflicts, dirnames, linktos, - dep, tscolor, adding); + depName, tscolor, adding); linktos = rpmdsFree(linktos); dirnames = rpmdsFree(dirnames); @@ -1328,10 +1328,10 @@ static int checkPackageSet(rpmts ts, con /** * Check to-be-erased dependencies against installed requires. * @param ts transaction set - * @param dep requires name + * @param depName requires name * @return 0 no problems found */ -static int checkDependentPackages(rpmts ts, const char * dep) +static int checkDependentPackages(rpmts ts, const char * depName) /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/ { @@ -1340,8 +1340,8 @@ static int checkDependentPackages(rpmts /* XXX rpmdb can be closed here, avoid error msg. */ if (rpmtsGetRdb(ts) != NULL) { rpmdbMatchIterator mi; - mi = rpmtsInitIterator(ts, RPMTAG_REQUIRENAME, dep, 0); - rc = checkPackageSet(ts, dep, mi, 0); + mi = rpmtsInitIterator(ts, RPMTAG_REQUIRENAME, depName, 0); + rc = checkPackageSet(ts, depName, mi, 0); } return rc; } @@ -1349,10 +1349,10 @@ static int checkDependentPackages(rpmts /** * Check to-be-added dependencies against installed conflicts. * @param ts transaction set - * @param dep conflicts name + * @param depName conflicts name * @return 0 no problems found */ -static int checkDependentConflicts(rpmts ts, const char * dep) +static int checkDependentConflicts(rpmts ts, const char * depName) /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/ { @@ -1361,8 +1361,8 @@ static int checkDependentConflicts(rpmts /* XXX rpmdb can be closed here, avoid error msg. */ if (rpmtsGetRdb(ts) != NULL) { rpmdbMatchIterator mi; - mi = rpmtsInitIterator(ts, RPMTAG_CONFLICTNAME, dep, 0); - rc = checkPackageSet(ts, dep, mi, 1); + mi = rpmtsInitIterator(ts, RPMTAG_CONFLICTNAME, depName, 0); + rc = checkPackageSet(ts, depName, mi, 1); } return rc; @@ -2277,6 +2277,7 @@ assert(newOrderCount == ts->orderCount); int rpmtsCheck(rpmts ts) { + const char * depName = NULL;; rpmdepFlags depFlags = rpmtsDFlags(ts); uint_32 tscolor = rpmtsColor(ts); rpmdbMatchIterator mi = NULL; @@ -2331,17 +2332,15 @@ int rpmtsCheck(rpmts ts) provides = rpmdsInit(provides); if (provides != NULL) while (rpmdsNext(provides) >= 0) { - const char * Name; - - if ((Name = rpmdsN(provides)) == NULL) - /*@innercontinue@*/ continue; /* XXX can't happen */ + depName = _free(depName); + depName = xstrdup(rpmdsN(provides)); #ifdef NOTYET if (rpmdsNSType(provides) == RPMNS_TYPE_ENVVAR) { const char * EVR = rpmdsEVR(provides); if (rpmdsNegateRC(provides, 0)) EVR = NULL; - rc = envPut(Name, EVR); + rc = envPut(depName, EVR); if (!rc) /*@innercontinue@*/ continue; /*@innerbreak@*/ break; @@ -2349,7 +2348,7 @@ int rpmtsCheck(rpmts ts) #endif /* Adding: check provides key against conflicts matches. */ - if (!checkDependentConflicts(ts, Name)) + if (!checkDependentConflicts(ts, depName)) /*@innercontinue@*/ continue; rc = 1; /*@innerbreak@*/ break; @@ -2377,13 +2376,11 @@ int rpmtsCheck(rpmts ts) provides = rpmdsInit(provides); if (provides != NULL) while (rpmdsNext(provides) >= 0) { - const char * Name; - - if ((Name = rpmdsN(provides)) == NULL) - /*@innercontinue@*/ continue; /* XXX can't happen */ + depName = _free(depName); + depName = xstrdup(rpmdsN(provides)); /* Erasing: check provides against requiredby matches. */ - if (!checkDependentPackages(ts, Name)) + if (!checkDependentPackages(ts, depName)) /*@innercontinue@*/ continue; rc = 1; /*@innerbreak@*/ break; @@ -2395,10 +2392,10 @@ int rpmtsCheck(rpmts ts) fi = rpmteFI(p, RPMTAG_BASENAMES); fi = rpmfiInit(fi, 0); while (rpmfiNext(fi) >= 0) { - const char * fn = rpmfiFN(fi); - + depName = _free(depName); + depName = xstrdup(rpmfiFN(fi)); /* Erasing: check filename against requiredby matches. */ - if (!checkDependentPackages(ts, fn)) + if (!checkDependentPackages(ts, depName)) /*@innercontinue@*/ continue; rc = 1; /*@innerbreak@*/ break; @@ -2429,6 +2426,7 @@ int rpmtsCheck(rpmts ts) exit: mi = rpmdbFreeIterator(mi); pi = rpmtsiFree(pi); + depName = _free(depName); (void) rpmswExit(rpmtsOp(ts, RPMTS_OP_CHECK), 0);