diff options
| author | Marc-André Lemburg <mal@egenix.com> | 2002-01-09 16:21:27 +0000 |
|---|---|---|
| committer | Marc-André Lemburg <mal@egenix.com> | 2002-01-09 16:21:27 +0000 |
| commit | 4c3cb5add2d19cabbd65687e4675efde521b6746 (patch) | |
| tree | 720d4e2483e445b1ab7960b42c2f56b519c39c54 /Python | |
| parent | 91cfb3443d67aeee0641913c528d2025e69d1df6 (diff) | |
| download | cpython-4c3cb5add2d19cabbd65687e4675efde521b6746.tar.gz | |
Fixed "u#" parser marker to pass through Unicode objects as-is without
going through the buffer interface API.
Added tests for this to the _testcapi module and updated docs.
Diffstat (limited to 'Python')
| -rw-r--r-- | Python/getargs.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Python/getargs.c b/Python/getargs.c index 9df2a2e566..411c69543d 100644 --- a/Python/getargs.c +++ b/Python/getargs.c @@ -838,16 +838,20 @@ convertsimple(PyObject *arg, char **p_format, va_list *p_va, char *msgbuf, if (*format == '#') { /* any buffer-like object */ void **p = (void **)va_arg(*p_va, char **); int *q = va_arg(*p_va, int *); + if (PyUnicode_Check(arg)) { + *p = PyUnicode_AS_UNICODE(arg); + *q = PyUnicode_GET_SIZE(arg); + } + else { char *buf; int count = convertbuffer(arg, p, &buf); - if (count < 0) return converterr(buf, arg, msgbuf, bufsize); *q = count/(sizeof(Py_UNICODE)); + } format++; } else { Py_UNICODE **p = va_arg(*p_va, Py_UNICODE **); - if (PyUnicode_Check(arg)) *p = PyUnicode_AS_UNICODE(arg); else |
