diff options
author | Justus Winter <[email protected]> | 2016-06-08 15:04:02 +0000 |
---|---|---|
committer | Justus Winter <[email protected]> | 2016-06-08 15:12:00 +0000 |
commit | 990492ea4f7dafbb75de15ea91c30cbf090034b5 (patch) | |
tree | 1fcded5fc6e327c64a5dd34f397fb489fd211945 /lang/python | |
parent | python: Implement the context manager protocol. (diff) | |
download | gpgme-990492ea4f7dafbb75de15ea91c30cbf090034b5.tar.gz gpgme-990492ea4f7dafbb75de15ea91c30cbf090034b5.zip |
python: Fix type.
* lang/python/gpgme.i: Use correct Python type for size.
Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to '')
-rw-r--r-- | lang/python/gpgme.i | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i index f466a874..98f30d55 100644 --- a/lang/python/gpgme.i +++ b/lang/python/gpgme.i @@ -183,18 +183,28 @@ /* For gpgme_data_write, but should be universal. */ %typemap(in) (const void *buffer, size_t size) { + Py_ssize_t ssize; + if ($input == Py_None) $1 = NULL, $2 = 0; else if (PyUnicode_Check($input)) - $1 = PyUnicode_AsUTF8AndSize($input, (size_t *) &$2); + $1 = PyUnicode_AsUTF8AndSize($input, &ssize); else if (PyBytes_Check($input)) - PyBytes_AsStringAndSize($input, (char **) &$1, (size_t *) &$2); + PyBytes_AsStringAndSize($input, (char **) &$1, &ssize); else { PyErr_Format(PyExc_TypeError, "arg %d: expected str, bytes, or None, got %s", $argnum, $input->ob_type->tp_name); return NULL; } + + if (! $1) + $2 = 0; + else + { + assert (ssize >= 0); + $2 = (size_t) ssize; + } } %typemap(freearg) (const void *buffer, size_t size) ""; |