python: Correctly translate to size_t.

* lang/python/gpgme.i: Correctly translate Python number to size_t.

Signed-off-by: Justus Winter <justus@g10code.com>
This commit is contained in:
Justus Winter 2016-09-26 13:16:59 +02:00
parent 1d80e7374a
commit c38fabfea0

View File

@ -329,15 +329,30 @@
PyErr_SetString(PyExc_TypeError, "Numeric argument expected");
}
// Those are for gpgme_data_read() and gpgme_strerror_r()
/* Those are for gpgme_data_read() and gpgme_strerror_r(). */
%typemap(in) (void *buffer, size_t size), (char *buf, size_t buflen) {
$2 = PyLong_AsLong($input);
if ($2 < 0) {
{
long tmp$argnum;
if (PyLong_Check($input))
tmp$argnum = PyLong_AsLong($input);
#if PY_MAJOR_VERSION < 3
else if (PyInt_Check($input))
tmp$argnum = PyInt_AsLong($input);
#endif
else
{
PyErr_SetString(PyExc_TypeError, "Numeric argument expected");
return NULL;
}
if (tmp$argnum < 0) {
PyErr_SetString(PyExc_ValueError, "Positive integer expected");
return NULL;
}
$2 = (size_t) tmp$argnum;
$1 = ($1_ltype) malloc($2+1);
}
}
%typemap(argout) (void *buffer, size_t size), (char *buf, size_t buflen) {
Py_XDECREF($result); /* Blow away any previous result */
if (result < 0) { /* Check for I/O error */