Author: Ronan Lamy <[email protected]>
Branch: py3.5
Changeset: r90041:7d3aa9ec294f
Date: 2017-02-10 20:19 +0000
http://bitbucket.org/pypy/pypy/changeset/7d3aa9ec294f/
Log: Test and fix for PyLong_AsLong
diff --git a/pypy/module/cpyext/longobject.py b/pypy/module/cpyext/longobject.py
--- a/pypy/module/cpyext/longobject.py
+++ b/pypy/module/cpyext/longobject.py
@@ -73,7 +73,7 @@
Return a C long representation of the contents of pylong. If
pylong is greater than LONG_MAX, an OverflowError is raised
and -1 will be returned."""
- return space.int_w(w_long)
+ return space.int_w(space.int(w_long))
@cpython_api([PyObject], Py_ssize_t, error=-1)
def PyLong_AsSsize_t(space, w_long):
diff --git a/pypy/module/cpyext/test/test_longobject.py
b/pypy/module/cpyext/test/test_longobject.py
--- a/pypy/module/cpyext/test/test_longobject.py
+++ b/pypy/module/cpyext/test/test_longobject.py
@@ -269,6 +269,20 @@
# A string with arabic digits. 'BAD' is after the 6th character.
assert module.from_unicode(u' 1\u0662\u0663\u0664BAD') == (1234, 4660)
+ def test_aslong(self):
+ module = self.import_extension('foo', [
+ ("as_long", "METH_O",
+ """
+ long n = PyLong_AsLong(args);
+ if (n == -1 && PyErr_Occurred()) {
+ return NULL;
+ }
+ return PyLong_FromLong(n);
+ """)])
+ assert module.as_long(123) == 123
+ assert module.as_long(-1) == -1
+ assert module.as_long(1.23) == 1
+
def test_strtol(self):
module = self.import_extension('foo', [
("from_str", "METH_NOARGS",
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit