aboutsummaryrefslogtreecommitdiffstats
path: root/lang/python
diff options
context:
space:
mode:
Diffstat (limited to 'lang/python')
-rw-r--r--lang/python/gpgme.i14
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) "";