On 8/21/06, Alexander Belopolsky <[EMAIL PROTECTED]> wrote:
Yes. Py_ssize_t can be bigger than a long (on LLP64 systems, such as Win64). It doesn't matter on other systems, and you have to read more than 31 bits worth of data to detect it even on Win64, but it's still a bug. file_readinto should be using PyInt_FromSsize_t() instead. (There is the SAFE_DOWNCAST macro for cases where we know the *value* of the (s)size_t will always fit in a long, on any supported system, but that isn't the case here.)
--
On Aug 15, 2006, at 3:16 AM, Martin v. Löwis wrote:
>
> Where does it assume that it is safe to case ssize_t -> long?
> That would be a bug.
Is this a bug?
file_readinto(PyFileObject *f, PyObject *args)
{
...
Py_ssize_t ndone, nnow;
...
return PyInt_FromLong((long)ndone);
}
See Objects/fileobject.c (revision 51420).
Yes. Py_ssize_t can be bigger than a long (on LLP64 systems, such as Win64). It doesn't matter on other systems, and you have to read more than 31 bits worth of data to detect it even on Win64, but it's still a bug. file_readinto should be using PyInt_FromSsize_t() instead. (There is the SAFE_DOWNCAST macro for cases where we know the *value* of the (s)size_t will always fit in a long, on any supported system, but that isn't the case here.)
Thomas Wouters <[EMAIL PROTECTED]>
Hi! I'm a .signature virus! copy me into your .signature file to help me spread!
_______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com