From: Antoine Pitrou Date: Tue, 7 May 2013 23:51:37 +0000 (+0200) Subject: Issue #17926: Fix dbm.__contains__ on 64-bit big-endian machines. X-Git-Tag: v2.7.5~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=38f1afe8d112087491f04fae44f5f0a3f6b5c839;p=thirdparty%2FPython%2Fcpython.git Issue #17926: Fix dbm.__contains__ on 64-bit big-endian machines. --- diff --git a/Misc/NEWS b/Misc/NEWS index 7cef7ef01cba..466781c1225c 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -34,6 +34,8 @@ Core and Builtins Library ------- +- Issue #17926: Fix dbm.__contains__ on 64-bit big-endian machines. + - Issue #17918: When using SSLSocket.accept(), if the SSL handshake failed on the new socket, the socket would linger indefinitely. Thanks to Peter Saveliev for reporting. diff --git a/Modules/dbmmodule.c b/Modules/dbmmodule.c index f9c99a8b8f02..8b16def26765 100644 --- a/Modules/dbmmodule.c +++ b/Modules/dbmmodule.c @@ -168,11 +168,13 @@ static int dbm_contains(register dbmobject *dp, PyObject *v) { datum key, val; + char *ptr; + Py_ssize_t size; - if (PyString_AsStringAndSize(v, (char **)&key.dptr, - (Py_ssize_t *)&key.dsize)) { + if (PyString_AsStringAndSize(v, &ptr, &size)) return -1; - } + key.dptr = ptr; + key.dsize = size; /* Expand check_dbmobject_open to return -1 */ if (dp->di_dbm == NULL) {