@@ -393,12 +393,6 @@ typedef struct {
393393 // only currently possible high priority environment is an active virtual
394394 // environment
395395 bool lowPriorityTag ;
396- // if true, we had an old-style tag with '-64' suffix, and so do not
397- // want to match tags like '3.x-32'
398- bool exclude32Bit ;
399- // if true, we had an old-style tag with '-32' suffix, and so *only*
400- // want to match tags like '3.x-32'
401- bool only32Bit ;
402396 // if true, allow PEP 514 lookup to override 'executable'
403397 bool allowExecutableOverride ;
404398 // if true, allow a nearby pyvenv.cfg to locate the executable
@@ -483,8 +477,6 @@ dumpSearchInfo(SearchInfo *search)
483477 DEBUG_2 (tag , tagLength );
484478 DEBUG_BOOL (oldStyleTag );
485479 DEBUG_BOOL (lowPriorityTag );
486- DEBUG_BOOL (exclude32Bit );
487- DEBUG_BOOL (only32Bit );
488480 DEBUG_BOOL (allowDefaults );
489481 DEBUG_BOOL (allowExecutableOverride );
490482 DEBUG_BOOL (windowed );
@@ -649,17 +641,6 @@ parseCommandLine(SearchInfo *search)
649641 search -> tagLength = argLen ;
650642 search -> oldStyleTag = true;
651643 search -> restOfCmdLine = tail ;
652- // If the tag ends with -64, we want to exclude 32-bit runtimes
653- // (If the tag ends with -32, it will be filtered later)
654- if (argLen > 3 ) {
655- if (0 == _compareArgument (& arg [argLen - 3 ], 3 , L"-64" , 3 )) {
656- search -> tagLength -= 3 ;
657- search -> exclude32Bit = true;
658- } else if (0 == _compareArgument (& arg [argLen - 3 ], 3 , L"-32" , 3 )) {
659- search -> tagLength -= 3 ;
660- search -> only32Bit = true;
661- }
662- }
663644 } else if (STARTSWITH (L"V:" ) || STARTSWITH (L"-version:" )) {
664645 // Arguments starting with 'V:' specify company and/or tag
665646 const wchar_t * argStart = wcschr (arg , L':' ) + 1 ;
@@ -1087,6 +1068,7 @@ checkDefaults(SearchInfo *search)
10871068 if (!slash ) {
10881069 search -> tag = tag ;
10891070 search -> tagLength = n ;
1071+ search -> oldStyleTag = true;
10901072 } else {
10911073 search -> company = tag ;
10921074 search -> companyLength = (int )(slash - tag );
@@ -1966,10 +1948,25 @@ _selectEnvironment(const SearchInfo *search, EnvironmentInfo *env, EnvironmentIn
19661948 }
19671949 } else if (0 == _compare (env -> company , -1 , L"PythonCore" , -1 )) {
19681950 // Old-style tags can only match PythonCore entries
1969- if (_startsWith (env -> tag , -1 , search -> tag , search -> tagLength )) {
1970- if (search -> exclude32Bit && _is32Bit (env )) {
1951+
1952+ // If the tag ends with -64, we want to exclude 32-bit runtimes
1953+ // (If the tag ends with -32, it will be filtered later)
1954+ int tagLength = search -> tagLength ;
1955+ bool exclude32Bit = false, only32Bit = false;
1956+ if (tagLength > 3 ) {
1957+ if (0 == _compareArgument (& search -> tag [tagLength - 3 ], 3 , L"-64" , 3 )) {
1958+ tagLength -= 3 ;
1959+ exclude32Bit = true;
1960+ } else if (0 == _compareArgument (& search -> tag [tagLength - 3 ], 3 , L"-32" , 3 )) {
1961+ tagLength -= 3 ;
1962+ only32Bit = true;
1963+ }
1964+ }
1965+
1966+ if (_startsWith (env -> tag , -1 , search -> tag , tagLength )) {
1967+ if (exclude32Bit && _is32Bit (env )) {
19711968 debug (L"# Excluding %s/%s because it looks like 32bit\n" , env -> company , env -> tag );
1972- } else if (search -> only32Bit && !_is32Bit (env )) {
1969+ } else if (only32Bit && !_is32Bit (env )) {
19731970 debug (L"# Excluding %s/%s because it doesn't look 32bit\n" , env -> company , env -> tag );
19741971 } else {
19751972 * best = env ;
0 commit comments