bytestring.c: Use `Py_ssize_t' for collecting buffer lengths.
authorMark Wooding <mdw@distorted.org.uk>
Fri, 3 Jun 2016 20:27:36 +0000 (21:27 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Fri, 3 Jun 2016 20:27:36 +0000 (21:27 +0100)
On 64-bit platforms, this is a 64-bit long, so if we pass an int to
`PyObject_AsReadBuffer', it will clobber the next word too.

bytestring.c

index 99c114c..b3b32de 100644 (file)
@@ -66,7 +66,7 @@ static PyObject *bytestring_pynew(PyTypeObject *ty,
     const void *xv, *yv;                                               \
     const unsigned char *xp, *yp;                                      \
     unsigned char *zp;                                                 \
-    int xsz, ysz;                                                      \
+    Py_ssize_t xsz, ysz;                                               \
     int i;                                                             \
     PyObject *rc = 0;                                                  \
     if (PyObject_AsReadBuffer(x, &xv, &xsz) ||                         \
@@ -88,7 +88,7 @@ BINOP(xor, ^)
     const void *xv;                                                    \
     const unsigned char *xp;                                           \
     unsigned char *zp;                                                 \
-    int xsz;                                                           \
+    Py_ssize_t xsz;                                                    \
     int i;                                                             \
     PyObject *rc = 0;                                                  \
     if (PyObject_AsReadBuffer(x, &xv, &xsz)) goto end;                 \