mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
My previous checkin caused compile() to no longer accept buffers, as noted
my MAL. Fixed. (Btw. eval() still doesn't take buffers, but that was so even before my patch.)
This commit is contained in:
parent
3aaf42c613
commit
b9b8e9cf6d
1 changed files with 7 additions and 5 deletions
|
@ -18,6 +18,8 @@
|
|||
*/
|
||||
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
|
||||
const char *Py_FileSystemDefaultEncoding = "mbcs";
|
||||
#elif defined(__APPLE__)
|
||||
const char *Py_FileSystemDefaultEncoding = "utf-8";
|
||||
#else
|
||||
const char *Py_FileSystemDefaultEncoding = NULL; /* use default */
|
||||
#endif
|
||||
|
@ -341,6 +343,7 @@ builtin_compile(PyObject *self, PyObject *args)
|
|||
int supplied_flags = 0;
|
||||
PyCompilerFlags cf;
|
||||
PyObject *result, *cmd, *tmp = NULL;
|
||||
int length;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "Oss|ii:compile", &cmd, &filename,
|
||||
&startstr, &supplied_flags, &dont_inherit))
|
||||
|
@ -357,15 +360,14 @@ builtin_compile(PyObject *self, PyObject *args)
|
|||
cf.cf_flags |= PyCF_SOURCE_IS_UTF8;
|
||||
}
|
||||
#endif
|
||||
if (!PyString_Check(cmd)) {
|
||||
if (PyObject_AsReadBuffer(cmd, (const void **)&str, &length))
|
||||
return NULL;
|
||||
if (length != strlen(str)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"compile() arg 1 must be a string");
|
||||
"expected string without null bytes");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (PyString_AsStringAndSize(cmd, &str, NULL))
|
||||
return NULL;
|
||||
|
||||
if (strcmp(startstr, "exec") == 0)
|
||||
start = Py_file_input;
|
||||
else if (strcmp(startstr, "eval") == 0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue