diff options
Diffstat (limited to 'Modules/posixmodule.c')
| -rw-r--r-- | Modules/posixmodule.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 0f6bd14904..931c0d3f3a 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -7749,9 +7749,13 @@ check_CreateSymbolicLink(void) /* only recheck */ if (Py_CreateSymbolicLinkW) return 1; + + Py_BEGIN_ALLOW_THREADS hKernel32 = GetModuleHandleW(L"KERNEL32"); *(FARPROC*)&Py_CreateSymbolicLinkW = GetProcAddress(hKernel32, "CreateSymbolicLinkW"); + Py_END_ALLOW_THREADS + return Py_CreateSymbolicLinkW != NULL; } @@ -11288,7 +11292,6 @@ check_ShellExecute() the system SHELL32.DLL, even if there is another SHELL32.DLL in the DLL search path. */ hShell32 = LoadLibraryW(L"SHELL32"); - Py_END_ALLOW_THREADS if (hShell32) { *(FARPROC*)&Py_ShellExecuteW = GetProcAddress(hShell32, "ShellExecuteW"); @@ -11296,6 +11299,7 @@ check_ShellExecute() } else { has_ShellExecute = 0; } + Py_END_ALLOW_THREADS } return has_ShellExecute; } @@ -11909,11 +11913,12 @@ os_cpu_count_impl(PyObject *module) /* Vista is supported and the GetMaximumProcessorCount API is Win7+ Need to fallback to Vista behavior if this call isn't present */ HINSTANCE hKernel32; - hKernel32 = GetModuleHandleW(L"KERNEL32"); - static DWORD(CALLBACK *_GetMaximumProcessorCount)(WORD) = NULL; + Py_BEGIN_ALLOW_THREADS + hKernel32 = GetModuleHandleW(L"KERNEL32"); *(FARPROC*)&_GetMaximumProcessorCount = GetProcAddress(hKernel32, "GetMaximumProcessorCount"); + Py_END_ALLOW_THREADS if (_GetMaximumProcessorCount != NULL) { ncpu = _GetMaximumProcessorCount(ALL_PROCESSOR_GROUPS); } |
