Py_SAFE_DOWNCAST isn't quite doing the right thing for going from Py_ssize_t
authorThomas Wouters <thomas@python.org>
Thu, 2 Mar 2006 04:48:27 +0000 (04:48 +0000)
committerThomas Wouters <thomas@python.org>
Thu, 2 Mar 2006 04:48:27 +0000 (04:48 +0000)
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.

Modules/_hashopenssl.c

index 8f460e2774a3e4f518acb76f23e27d09b5aa8954..fe6870b9cf7f4df09d92f3b8af88d322d259904e 100644 (file)
@@ -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 */