index : pacman | |
Archlinux32 fork of pacman | gitolite user |
summaryrefslogtreecommitdiff |
author | Dan McGee <dan@archlinux.org> | 2011-08-23 01:49:29 -0500 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-08-23 01:49:29 -0500 |
commit | 30d978a966c1d2a619acc49f204e4da1e0010c83 (patch) | |
tree | 213655259e062d4603b4f665ddc4f9941280c92c /lib/libalpm/version.c | |
parent | cc03d6366a12cd1926e46265c63fba98f41faaae (diff) |
-rw-r--r-- | lib/libalpm/version.c | 9 |
diff --git a/lib/libalpm/version.c b/lib/libalpm/version.c index 73d6a660..6b65a413 100644 --- a/lib/libalpm/version.c +++ b/lib/libalpm/version.c @@ -98,8 +98,8 @@ static int rpmvercmp(const char *a, const char *b) str1 = strdup(a); str2 = strdup(b); - one = str1; - two = str2; + one = ptr1 = str1; + two = ptr2 = str2; /* loop through each version segment of str1 and str2 and compare them */ while (*one && *two) { @@ -109,6 +109,11 @@ static int rpmvercmp(const char *a, const char *b) /* If we ran to the end of either, we are finished with the loop */ if (!(*one && *two)) break; + /* If the separator lengths were different, we are also finished */ + if ((one - ptr1) != (two - ptr2)) { + return (one - ptr1) < (two - ptr2) ? -1 : 1; + } + ptr1 = one; ptr2 = two; |