#4747: on Windows, starting a module with a non-ascii filename would print a useless "SyntaxError: None"
when the script contains a "# coding:" declaration.

The Python API expects char* to be utf-8 encoded. wcstombs should be avoided here.

Reviewed by Benjamin. Will backport to 3.0
diff --git a/Modules/main.c b/Modules/main.c
index 78913ee..3025d09 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -600,18 +600,21 @@
 		}
 
 		if (sts==-1) {
-			char cfilename[PATH_MAX];
+			PyObject *filenameObj = NULL;
 			char *p_cfilename = "<stdin>";
 			if (filename) {
-				size_t r = wcstombs(cfilename, filename, PATH_MAX);
-				p_cfilename = cfilename;
-				if (r == (size_t)-1 || r >= PATH_MAX)
+				filenameObj = PyUnicode_FromWideChar(
+					filename, wcslen(filename));
+				if (filenameObj != NULL)
+					p_cfilename = _PyUnicode_AsString(filenameObj);
+				else
 					p_cfilename = "<decoding error>";
 			}
 			sts = PyRun_AnyFileExFlags(
 				fp,
 				p_cfilename,
 				filename != NULL, &cf) != 0;
+			Py_XDECREF(filenameObj);
 		}
 		
 	}