diff -Naur cfengine-2.1.13.orig/src/package.c cfengine-2.1.13/src/package.c --- cfengine-2.1.13.orig/src/package.c 2004-10-10 03:42:51.000000000 -0400 +++ cfengine-2.1.13/src/package.c 2005-02-28 16:34:27.366841036 -0500 @@ -198,23 +198,25 @@ { result = cmpsense_lt; } + /* If that did not decide it, try version. We must *always* have * a version string. That's just the way it is.*/ - - switch (rpmvercmp(vA, vB)) + if (result == cmpsense_eq) { - case 1: result = cmpsense_gt; - break; - case -1: result = cmpsense_lt; - break; + switch (rpmvercmp(vA, vB)) + { + case 1: result = cmpsense_gt; + break; + case -1: result = cmpsense_lt; + break; + } } /* if we wind up here, everything rides on the release if both have it. * RPM always stores a release internally in the database, so the A side * will have it. It's just a matter of whether or not the user cares * about it at this point. */ - - if (rB && *rB) + if ((result == cmpsense_eq) && (rB && *rB)) { switch (rpmvercmp(rA, rB)) { @@ -747,7 +749,8 @@ { free(s1); free(s2); - return rc; + if (rc > 0) { return 1; } + if (rc < 0) { return -1; } } /* restore character that was replaced by null above */