diff --git a/io/mudext/hpmudext.c b/io/mudext/hpmudext.c index dca3e9d..dfcd22a 100644 --- a/io/mudext/hpmudext.c +++ b/io/mudext/hpmudext.c @@ -24,6 +24,8 @@ Authors: Don Welch, David Suffield, Naga Samrat Chowdary Narla \*****************************************************************************/ +#define PY_SSIZE_T_CLEAN + #include #include #include "hpmud.h" @@ -187,14 +189,22 @@ static PyObject *write_channel(PyObject *self, PyObject *args) HPMUD_CHANNEL cd; int timeout = 30; char * buf; - int buf_size = 0; + Py_ssize_t buf_size = 0; + int buf_size_asInt = 0; int bytes_written = 0; if (!PyArg_ParseTuple(args, "iis#|i", &dd, &cd, &buf, &buf_size, &timeout)) return NULL; + if (buf_size < INT_MIN) + buf_size_asInt = INT_MIN; + else if (buf_size > INT_MAX) + buf_size_asInt = INT_MAX; + else + buf_size_asInt = (int)buf_size; + Py_BEGIN_ALLOW_THREADS - result = hpmud_write_channel(dd, cd, buf, buf_size, timeout, &bytes_written); + result = hpmud_write_channel(dd, cd, buf, buf_size_asInt, timeout, &bytes_written); Py_END_ALLOW_THREADS return Py_BuildValue("(ii)", result, bytes_written); @@ -231,14 +241,22 @@ static PyObject *set_pml(PyObject *self, PyObject *args) char * oid; int type; char * data; - int data_size; + Py_ssize_t data_size = 0; + int data_size_asInt = 0; int pml_result; if (!PyArg_ParseTuple(args, "iisis#", &dd, &cd, &oid, &type, &data, &data_size)) return NULL; + if (data_size < INT_MIN) + data_size_asInt = INT_MIN; + else if (data_size > INT_MAX) + data_size_asInt = INT_MAX; + else + data_size_asInt = (int)data_size; + Py_BEGIN_ALLOW_THREADS - result = hpmud_set_pml(dd, cd, oid, type, (void *)data, data_size, &pml_result); + result = hpmud_set_pml(dd, cd, oid, type, (void *)data, data_size_asInt, &pml_result); Py_END_ALLOW_THREADS return Py_BuildValue("(ii)", result, pml_result); diff --git a/scan/scanext/scanext.c b/scan/scanext/scanext.c index 1e6b514..597abd8 100755 --- a/scan/scanext/scanext.c +++ b/scan/scanext/scanext.c @@ -45,6 +45,8 @@ PERFORMANCE OF THIS SOFTWARE. *******************************************************************/ +#define PY_SSIZE_T_CLEAN + /* _ScanDevice objects */ #include "Python.h"