summaryrefslogtreecommitdiffstats
path: root/Python/getargs.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/getargs.c')
-rw-r--r--Python/getargs.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/Python/getargs.c b/Python/getargs.c
index 9df2a2e..411c695 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