From 38f1afe8d112087491f04fae44f5f0a3f6b5c839 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Wed, 8 May 2013 01:51:37 +0200 Subject: [PATCH] Issue #17926: Fix dbm.__contains__ on 64-bit big-endian machines. --- Misc/NEWS | 2 ++ Modules/dbmmodule.c | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) 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) { -- 2.47.3