diff -r 701d3554de0e -r e97a00bf18ae mercurial/parsers.c --- a/mercurial/parsers.c Tue Mar 31 14:01:33 2015 -0700 +++ b/mercurial/parsers.c Tue Mar 31 10:25:29 2015 -0700 @@ -93,14 +93,14 @@ return ret; } -static PyObject *asciilower(PyObject *self, PyObject *args) +static inline PyObject *_asciilower(PyObject *str_obj) { char *str, *newstr; - int i, len; + Py_ssize_t i, len; PyObject *newobj = NULL; - if (!PyArg_ParseTuple(args, "s#", &str, &len)) - goto quit; + str = PyBytes_AS_STRING(str_obj); + len = PyBytes_GET_SIZE(str_obj); newobj = PyBytes_FromStringAndSize(NULL, len); if (!newobj) @@ -127,6 +127,14 @@ return NULL; } +static PyObject *asciilower(PyObject *self, PyObject *args) +{ + PyObject *str_obj; + if (!PyArg_ParseTuple(args, "O!:asciilower", &PyBytes_Type, &str_obj)) + return NULL; + return _asciilower(str_obj); +} + /* * This code assumes that a manifest is stitched together with newline * ('\n') characters.