mirror of https://github.com/python/cpython
bpo-45616: Let py.exe distinguish between v3.1 and v3.10 (GH-29731)
This commit is contained in:
parent
9cf5646bb4
commit
f9de97aae5
|
@ -0,0 +1,4 @@
|
||||||
|
Fix Python Launcher's ability to distinguish between versions 3.1 and 3.10
|
||||||
|
when either one is explicitly requested. Previously, 3.1 would be used if
|
||||||
|
3.10 was requested but not installed, and 3.10 would be used if 3.1 was
|
||||||
|
requested but 3.10 was installed.
|
|
@ -542,8 +542,17 @@ find_python_by_version(wchar_t const * wanted_ver)
|
||||||
}
|
}
|
||||||
for (i = 0; i < num_installed_pythons; i++, ip++) {
|
for (i = 0; i < num_installed_pythons; i++, ip++) {
|
||||||
n = wcslen(ip->version);
|
n = wcslen(ip->version);
|
||||||
if (n > wlen)
|
/*
|
||||||
|
* If wlen is greater than 1, we're probably trying to find a specific
|
||||||
|
* version and thus want an exact match: 3.1 != 3.10. Otherwise, we
|
||||||
|
* just want a prefix match.
|
||||||
|
*/
|
||||||
|
if ((wlen > 1) && (n != wlen)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (n > wlen) {
|
||||||
n = wlen;
|
n = wlen;
|
||||||
|
}
|
||||||
if ((wcsncmp(ip->version, wanted_ver, n) == 0) &&
|
if ((wcsncmp(ip->version, wanted_ver, n) == 0) &&
|
||||||
/* bits == 0 => don't care */
|
/* bits == 0 => don't care */
|
||||||
((bits == 0) || (ip->bits == bits))) {
|
((bits == 0) || (ip->bits == bits))) {
|
||||||
|
|
Loading…
Reference in New Issue