From a921fb0f66e082a61277e97e1326a26fa59be3f0 Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Fri, 3 Apr 2009 22:18:11 +0000 Subject: Py_BuildValue's 'c' code should use byte strings #5666 --- Doc/c-api/arg.rst | 10 +++++++--- Modules/_cursesmodule.c | 2 +- Modules/arraymodule.c | 4 ++-- Python/modsupport.c | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Doc/c-api/arg.rst b/Doc/c-api/arg.rst index a554bc9..8a40f22 100644 --- a/Doc/c-api/arg.rst +++ b/Doc/c-api/arg.rst @@ -212,7 +212,7 @@ variable(s) whose address should be passed. :ctype:`char`. ``C`` (string of length 1) [int] - Covert a Python character, represented as a unicode string of length 1, to a + Convert a Python character, represented as a unicode string of length 1, to a C :ctype:`int`. ``f`` (float) [float] @@ -511,8 +511,12 @@ and the following format units are left untouched. Convert a C :ctype:`Py_ssize_t` to a Python integer. ``c`` (string of length 1) [char] - Convert a C :ctype:`int` representing a character to a Python string of length - 1. + Convert a C :ctype:`int` representing a byte to a Python byte string of + length 1. + + ``C`` (string of length 1) [int] + Convert a C :ctype:`int` representing a character to Python unicode + string of length 1. ``d`` (float) [double] Convert a C :ctype:`double` to a Python floating point number. diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index 9bc74a6..5cb198e 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -890,7 +890,7 @@ PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args) PyErr_SetString(PyCursesError, "no input"); return NULL; } else if (rtn<=255) - return Py_BuildValue("c", rtn); + return Py_BuildValue("C", rtn); else #if defined(__NetBSD__) return PyUnicode_FromString(unctrl(rtn)); diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index b39da8e..6dc46ad 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -1141,14 +1141,14 @@ array_reduce(arrayobject *array) > PY_SSIZE_T_MAX / Py_SIZE(array)) { return PyErr_NoMemory(); } - result = Py_BuildValue("O(cy#)O", + result = Py_BuildValue("O(Cy#)O", Py_TYPE(array), array->ob_descr->typecode, array->ob_item, Py_SIZE(array) * array->ob_descr->itemsize, dict); } else { - result = Py_BuildValue("O(c)O", + result = Py_BuildValue("O(C)O", Py_TYPE(array), array->ob_descr->typecode, dict); diff --git a/Python/modsupport.c b/Python/modsupport.c index 2531d0d..0cbc6f7 100644 --- a/Python/modsupport.c +++ b/Python/modsupport.c @@ -289,7 +289,7 @@ do_mkvalue(const char **p_format, va_list *p_va, int flags) { char p[1]; p[0] = (char)va_arg(*p_va, int); - return PyUnicode_FromStringAndSize(p, 1); + return PyBytes_FromStringAndSize(p, 1); } case 'C': { -- cgit v0.12