diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-08-15 21:10:47 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-08-15 21:10:47 +0000 |
commit | 7627c95917f8aca8382253a7ed11a62bdc98a657 (patch) | |
tree | 3943c6542603968829336a62376032a14cafaa05 | |
parent | For bug #188782, dependencies on packages specified as arguments are given hi... (diff) | |
download | portage-7627c95917f8aca8382253a7ed11a62bdc98a657.tar.gz portage-7627c95917f8aca8382253a7ed11a62bdc98a657.tar.bz2 portage-7627c95917f8aca8382253a7ed11a62bdc98a657.zip |
For bug #188449, since python floats have limited range, we multiply both floating point representations by a constant so that they are transformed into whole numbers. This allows the practically infinite range of a python int to be exploited. The multiplication is done by padding both literal strings with zeros as necessary to ensure equal length. (branches/2.1.2 r7607)
svn path=/main/branches/2.1.2.9/; revision=7620
-rw-r--r-- | pym/portage_versions.py | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/pym/portage_versions.py b/pym/portage_versions.py index 52db5e747..91b8cc164 100644 --- a/pym/portage_versions.py +++ b/pym/portage_versions.py @@ -98,8 +98,17 @@ def vercmp(ver1, ver2, silent=1): list2.append(int(vlist2[i])) # now we have to use floats so 1.02 compares correctly against 1.1 else: - list1.append(float("0."+vlist1[i])) - list2.append(float("0."+vlist2[i])) + # list1.append(float("0."+vlist1[i])) + # list2.append(float("0."+vlist2[i])) + # Since python floats have limited range, we multiply both + # floating point representations by a constant so that they are + # transformed into whole numbers. This allows the practically + # infinite range of a python int to be exploited. The + # multiplication is done by padding both literal strings with + # zeros as necessary to ensure equal length. + max_len = max(len(vlist1[i]), len(vlist2[i])) + list1.append(int(vlist1[i].ljust(max_len, "0"))) + list2.append(int(vlist2[i].ljust(max_len, "0"))) # and now the final letter if len(match1.group(5)): |