From: Thomas Wouters Date: Thu, 2 Mar 2006 04:48:27 +0000 (+0000) Subject: Py_SAFE_DOWNCAST isn't quite doing the right thing for going from Py_ssize_t X-Git-Tag: v2.5a0~404 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=369092be43cf6857aff58238dd68d00fab00850e;p=thirdparty%2FPython%2Fcpython.git Py_SAFE_DOWNCAST isn't quite doing the right thing for going from Py_ssize_t to an unsigned int (and back again) on 64-bit machines, even though the actual value of the Py_ssize_t variable is way below 31 bits. I suspect compiler-error. --- diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c index 8f460e2774a3..fe6870b9cf7f 100644 --- a/Modules/_hashopenssl.c +++ b/Modules/_hashopenssl.c @@ -173,8 +173,7 @@ EVP_update(EVPobject *self, PyObject *args) if (!PyArg_ParseTuple(args, "s#:update", &cp, &len)) return NULL; - EVP_DigestUpdate(&self->ctx, cp, Py_SAFE_DOWNCAST(len, Py_ssize_t, - unsigned int)); + EVP_DigestUpdate(&self->ctx, cp, (unsigned int)len); Py_INCREF(Py_None); return Py_None; @@ -265,8 +264,7 @@ EVP_tp_init(EVPobject *self, PyObject *args, PyObject *kwds) Py_INCREF(self->name); if (cp && len) - EVP_DigestUpdate(&self->ctx, cp, Py_SAFE_DOWNCAST(len, Py_ssize_t, - unsigned int)); + EVP_DigestUpdate(&self->ctx, cp, (unsigned int)len); return 0; } @@ -393,8 +391,7 @@ EVP_new(PyObject *self, PyObject *args, PyObject *kwdict) digest = EVP_get_digestbyname(name); - return EVPnew(name_obj, digest, NULL, cp, Py_SAFE_DOWNCAST(len, Py_ssize_t, - unsigned int)); + return EVPnew(name_obj, digest, NULL, cp, (unsigned int)len); } /* @@ -419,7 +416,7 @@ EVP_new(PyObject *self, PyObject *args, PyObject *kwdict) CONST_ ## NAME ## _name_obj, \ NULL, \ CONST_new_ ## NAME ## _ctx_p, \ - cp, Py_SAFE_DOWNCAST(len, Py_ssize_t, unsigned int)); \ + cp, (unsigned int)len); \ } /* a PyMethodDef structure for the constructor */