summaryrefslogtreecommitdiff
path: root/PC/launcher.c
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2020-12-27 12:46:59 -0500
committerJason R. Coombs <jaraco@jaraco.com>2020-12-27 12:46:59 -0500
commita78f0158a28734f965218b834ea8c0b166b7353f (patch)
treedca70268e2a41d49658e7eed783c6fc243d119cd /PC/launcher.c
parentec8e6895a3ce9cd69b6ceb75a15fcc74d4a522dc (diff)
parentbf64d9064ab641b1ef9a0c4bda097ebf1204faf4 (diff)
downloadcpython-git-revert-23107-revert-13893-fix-issue-37193.tar.gz
Merge branch 'master' into revert-23107-revert-13893-fix-issue-37193revert-23107-revert-13893-fix-issue-37193
Diffstat (limited to 'PC/launcher.c')
-rw-r--r--PC/launcher.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/PC/launcher.c b/PC/launcher.c
index 106fc66075..cc2d35b2c4 100644
--- a/PC/launcher.c
+++ b/PC/launcher.c
@@ -425,11 +425,21 @@ compare_pythons(const void * p1, const void * p2)
INSTALLED_PYTHON * ip1 = (INSTALLED_PYTHON *) p1;
INSTALLED_PYTHON * ip2 = (INSTALLED_PYTHON *) p2;
/* note reverse sorting on version */
- int result = wcscmp(ip2->version, ip1->version);
-
- if (result == 0)
- result = ip2->bits - ip1->bits; /* 64 before 32 */
- return result;
+ int result = CompareStringW(LOCALE_INVARIANT, SORT_DIGITSASNUMBERS,
+ ip2->version, -1, ip1->version, -1);
+ switch (result) {
+ case 0:
+ error(0, L"CompareStringW failed");
+ return 0;
+ case CSTR_LESS_THAN:
+ return -1;
+ case CSTR_EQUAL:
+ return ip2->bits - ip1->bits; /* 64 before 32 */
+ case CSTR_GREATER_THAN:
+ return 1;
+ default:
+ return 0; // This should never be reached.
+ }
}
static void
@@ -1248,6 +1258,7 @@ static PYC_MAGIC magic_values[] = {
{ 3390, 3399, L"3.7" },
{ 3400, 3419, L"3.8" },
{ 3420, 3429, L"3.9" },
+ { 3430, 3439, L"3.10" },
{ 0 }
};