summaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/src/Python/dynload_win.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/tools/python3/src/Python/dynload_win.c')
-rw-r--r--contrib/tools/python3/src/Python/dynload_win.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/contrib/tools/python3/src/Python/dynload_win.c b/contrib/tools/python3/src/Python/dynload_win.c
index 81787e5f22a..5702ab2cd71 100644
--- a/contrib/tools/python3/src/Python/dynload_win.c
+++ b/contrib/tools/python3/src/Python/dynload_win.c
@@ -166,14 +166,14 @@ dl_funcptr _PyImport_FindSharedFuncptrWindows(const char *prefix,
{
dl_funcptr p;
char funcname[258], *import_python;
- const wchar_t *wpathname;
_Py_CheckPython3();
-_Py_COMP_DIAG_PUSH
-_Py_COMP_DIAG_IGNORE_DEPR_DECLS
- wpathname = _PyUnicode_AsUnicode(pathname);
-_Py_COMP_DIAG_POP
+#if USE_UNICODE_WCHAR_CACHE
+ const wchar_t *wpathname = _PyUnicode_AsUnicode(pathname);
+#else /* USE_UNICODE_WCHAR_CACHE */
+ wchar_t *wpathname = PyUnicode_AsWideCharString(pathname, NULL);
+#endif /* USE_UNICODE_WCHAR_CACHE */
if (wpathname == NULL)
return NULL;
@@ -195,6 +195,9 @@ _Py_COMP_DIAG_POP
LOAD_LIBRARY_SEARCH_DEFAULT_DIRS |
LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR);
Py_END_ALLOW_THREADS
+#if !USE_UNICODE_WCHAR_CACHE
+ PyMem_Free(wpathname);
+#endif /* USE_UNICODE_WCHAR_CACHE */
/* restore old error mode settings */
SetErrorMode(old_mode);