diff options
author | Guido van Rossum <guido@python.org> | 2007-08-27 15:02:28 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-08-27 15:02:28 (GMT) |
commit | a4b8d1de7c8bdacfa07f9545fcef81fee1c6601f (patch) | |
tree | c9a38216a2531622c7785490a8d66c34d9a32e2b | |
parent | ddd25825c839cbae9dcc6c9a7c662d06ee113ca0 (diff) | |
download | cpython-a4b8d1de7c8bdacfa07f9545fcef81fee1c6601f.zip cpython-a4b8d1de7c8bdacfa07f9545fcef81fee1c6601f.tar.gz cpython-a4b8d1de7c8bdacfa07f9545fcef81fee1c6601f.tar.bz2 |
Some changes in preparation of stricter rules about mixing str and bytes.
-rw-r--r-- | Python/bltinmodule.c | 12 | ||||
-rw-r--r-- | Python/import.c | 11 |
2 files changed, 14 insertions, 9 deletions
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 22a57ea..284910d 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -403,18 +403,16 @@ source_as_string(PyObject *cmd) char *str; Py_ssize_t size; - if (!PyObject_CheckReadBuffer(cmd) && - !PyUnicode_Check(cmd)) { - PyErr_SetString(PyExc_TypeError, - "eval()/exec() arg 1 must be a string, bytes or code object"); - return NULL; - } - if (PyUnicode_Check(cmd)) { cmd = _PyUnicode_AsDefaultEncodedString(cmd, NULL); if (cmd == NULL) return NULL; } + else if (!PyObject_CheckReadBuffer(cmd)) { + PyErr_SetString(PyExc_TypeError, + "eval()/exec() arg 1 must be a string, bytes or code object"); + return NULL; + } if (PyObject_AsReadBuffer(cmd, (const void **)&str, &size) < 0) { return NULL; } diff --git a/Python/import.c b/Python/import.c index 8195bad..2ef6aec 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1247,8 +1247,15 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf, Py_ssize_t size; if (!v) return NULL; - if (PyObject_AsCharBuffer(v, &base, &size) < 0) - return NULL; + if (PyUnicode_Check(v)) { + v = _PyUnicode_AsDefaultEncodedString(v, NULL); + if (v == NULL) + return NULL; + } + if (!PyString_Check(v)) + continue; + base = PyString_AS_STRING(v); + size = PyString_GET_SIZE(v); len = size; if (len + 2 + namelen + MAXSUFFIXSIZE >= buflen) { continue; /* Too long */ |