Pauli Rikula <pauli.rik...@gmail.com> added the comment: I'm a newbie what it comes to Python's C-sources, so please do not take me too seriously. I fetched the sources 'svn checkout http://svn.python.org/projects/python/branches/release26-maint ' studied the issue, and my best guess is that Modules/_ctypes/cfield.c 's funktion d_set is called, when converting something to ctypes.c_double
Please check, that this is what happens :) If so, Objects/longobject.c's function double PyLong_AsDouble(PyObject *vv) sets the overflow exception, but d_set overwrites it, like you can see: static PyObject * d_set(void *ptr, PyObject *value, Py_ssize_t size) { double x; x = PyFloat_AsDouble(value); if (x == -1 && PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, " float expected instead of %s instance", value->ob_type->tp_name); return NULL; } memcpy(ptr, &x, sizeof(double)); _RET(value); } Perhaps something like: if (PyErr_ExceptionMatches(PyExc_OverflowError)){ return NULL; } just after the line: 'f (x == -1 && PyErr_Occurred()) {' could fix this? But like I said, I'm an newbie, this was actually my first look into Python/C API and I have not tested this fix in any way whatsoever ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue9041> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com