Lisandro Dalcin schrieb am 29.03.2015 um 14:52: >> Lisandro Dalcin schrieb am 29.03.2015 um 12:23: >>> One thing that Cython developers really need is PyPy defining a macro >>> such as PYPY_VERSION_HEX in such a way us we can properly use >>> conditional compilation. For example, a few days ago I was pushing >>> PyPy fixes to Cython. I tried to use _PyLong_Sign in my patch, but the >>> interpreter broke at runtime. > > however I do require _PyLong_Sign to work if I want to > report correct overflow error messages when converting PyLong values > to a C integral type. In CPython, we are using Py_SIZE for that, not > only for speed, but also to figure out the right overflow kind when > converting to unsigned integers. > > diff --git a/Cython/Utility/TypeConversion.c b/Cython/Utility/TypeConversion.c > index 4cd8229..fbac649 100644 > --- a/Cython/Utility/TypeConversion.c > +++ b/Cython/Utility/TypeConversion.c > @@ -560,6 +560,10 @@ static CYTHON_INLINE {{TYPE}} > {{FROM_PY_FUNCTION}}(PyObject *x) { > if (unlikely(Py_SIZE(x) < 0)) { > goto raise_neg_overflow; > } > +#elif CYTHON_COMPILING_IN_PYPY > + if (unlikely(_PyLong_Sign(x) < 0)) { > + goto raise_neg_overflow; > + } > #endif > if (sizeof({{TYPE}}) <= sizeof(unsigned long)) { > __PYX_VERIFY_RETURN_INT({{TYPE}}, unsigned long, > PyLong_AsUnsignedLong(x))
Why not call PyObject_RichCompareBool() to make cpyext itself compare the value to 0? Stefan _______________________________________________ cython-devel mailing list cython-devel@python.org https://mail.python.org/mailman/listinfo/cython-devel