chiark / gitweb /
key: Use convulong instead of PyLong_AsUnsignedLong.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 21 Mar 2006 01:20:29 +0000 (01:20 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Tue, 21 Mar 2006 01:20:29 +0000 (01:20 +0000)
Python 2.4's implementation of PyLong_AsUnsignedLong handles integers
correctly; but 2.3 insists on having a real `long' object.  Our
`convulong' function handles these, and also stranger things like MPs.
Use it.

key.c

diff --git a/key.c b/key.c
index 57d01f98f93d557d2f6153a3aedd28a13c85e82d..c0b9eb49dceba2e2422033f3f47d93b5eb8251bd 100644 (file)
--- a/key.c
+++ b/key.c
@@ -1482,7 +1482,7 @@ static int kset_exptime(PyObject *me, PyObject *x, void *hunoz)
   key *k = KEY_K(me);
   unsigned long et;
 
-  if ((et = PyLong_AsUnsignedLong(x)) == (unsigned long)-1 && PyErr_Occurred())
+  if (!convulong(x, &et))
     goto end;
   if (!(KEY_KF(me)->f & KF_WRITE))
     KEYERR(KERR_READONLY);
@@ -1498,7 +1498,7 @@ static int kset_deltime(PyObject *me, PyObject *x, void *hunoz)
   key *k = KEY_K(me);
   unsigned long dt;
 
-  if ((dt = PyLong_AsUnsignedLong(x)) == (unsigned long)-1 && PyErr_Occurred())
+  if (!convulong(x, &dt))
     goto end;
   if (dt == KEXP_FOREVER && k->exp != KEXP_FOREVER)
     VALERR("key will eventually expire");