From 9a6692f6d7784365ae07094694c754d2b153b719 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 14 Oct 2010 10:51:24 +0000 Subject: [PATCH] Py_Main() uses _Py_wchar2char() to encode the filename in error messages --- Modules/main.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Modules/main.c b/Modules/main.c index c9499ac51b..bbf695fb4e 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -637,19 +637,19 @@ Py_Main(int argc, wchar_t **argv) } if (sts==-1 && filename!=NULL) { - if ((fp = _Py_wfopen(filename, L"r")) == NULL) { - char cfilename[PATH_MAX]; - size_t r = wcstombs(cfilename, filename, PATH_MAX); - if (r == PATH_MAX) - /* cfilename is not null-terminated; - * forcefully null-terminating it - * might break the shift state */ - strcpy(cfilename, ""); - if (r == ((size_t)-1)) - strcpy(cfilename, ""); + fp = _Py_wfopen(filename, L"r"); + if (fp == NULL) { + char *cfilename_buffer; + const char *cfilename; + cfilename_buffer = _Py_wchar2char(filename); + if (cfilename_buffer != NULL) + cfilename = cfilename_buffer; + else + cfilename = ""; fprintf(stderr, "%ls: can't open file '%s': [Errno %d] %s\n", argv[0], cfilename, errno, strerror(errno)); - + if (cfilename_buffer) + PyMem_Free(cfilename_buffer); return 2; } else if (skipfirstline) { -- 2.40.0