Mercurial > cpython-lru_cache-weakref
diff Python/bltinmodule.c @ 27782:904f0e769820 legacy-trunk
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.)
| author | Just van Rossum <just@letterror.com> |
|---|---|
| date | Mon, 10 Feb 2003 09:22:01 +0000 |
| parents | cc01fb654ce3 |
| children | f34446fa216e |
line wrap: on
line diff
--- a/Python/bltinmodule.c Mon Feb 10 08:21:10 2003 +0000 +++ b/Python/bltinmodule.c Mon Feb 10 09:22:01 2003 +0000 @@ -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 @@ 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 @@ 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)
