diff options
| author | Justus Winter <[email protected]> | 2016-09-26 11:16:59 +0000 | 
|---|---|---|
| committer | Justus Winter <[email protected]> | 2016-09-26 14:54:58 +0000 | 
| commit | c38fabfea0601ed5f61e27e0bf43f8e74c67ce2a (patch) | |
| tree | 90f7fc547726fc40e12173b3d38ff93034c9934f | |
| parent | python: Correctly translate off_t. (diff) | |
| download | gpgme-c38fabfea0601ed5f61e27e0bf43f8e74c67ce2a.tar.gz gpgme-c38fabfea0601ed5f61e27e0bf43f8e74c67ce2a.zip | |
python: Correctly translate to size_t.
* lang/python/gpgme.i: Correctly translate Python number to size_t.
Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to '')
| -rw-r--r-- | lang/python/gpgme.i | 29 | 
1 files changed, 22 insertions, 7 deletions
| diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i index 934ebea2..04257fd3 100644 --- a/lang/python/gpgme.i +++ b/lang/python/gpgme.i @@ -329,14 +329,29 @@      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) { -     PyErr_SetString(PyExc_ValueError, "Positive integer expected"); -     return NULL; -   } -   $1 = ($1_ltype) malloc($2+1); +  { +    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 */ | 
