The argument was fetched in a long, but PyUnicode_FromOrdinal takes an int.
(why doesn't gcc issue a truncation warning in this case?)
)
self.assertRaises(ValueError, unichr, sys.maxunicode+1)
self.assertRaises(TypeError, unichr)
+ self.assertRaises((OverflowError, ValueError), unichr, 2**32)
# We don't want self in vars(), so these are static methods
Core and Builtins
-----------------
+- Issue #3479: On platforms where sizeof(int) is smaller than sizeof(long)
+ (64bit Unix, for example), unichr() would truncate its argument and return
+ u'\x00' for unichr(2**32). Now it properly raises an OverflowError.
+
- Apply security patches from Apple.
- Issue #2542: Now that issubclass() may call arbitrary code, ensure that
static PyObject *
builtin_unichr(PyObject *self, PyObject *args)
{
- long x;
+ int x;
- if (!PyArg_ParseTuple(args, "l:unichr", &x))
+ if (!PyArg_ParseTuple(args, "i:unichr", &x))
return NULL;
return PyUnicode_FromOrdinal(x);