• Martin Panter's avatar
    Issue #25626: Change zlib to accept Py_ssize_t and cap to UINT_MAX · e99e9776
    Martin Panter yazdı
    The underlying zlib library stores sizes in “unsigned int”. The corresponding
    Python parameters are all sizes of buffers filled in by zlib, so it is okay
    to reduce higher values to the UINT_MAX internal cap. OverflowError is still
    raised for sizes that do not fit in Py_ssize_t.
    
    Sizes are now limited to Py_ssize_t rather than unsigned long, because Python
    byte strings cannot be larger than Py_ssize_t. Previously this could result
    in a SystemError on 32-bit platforms.
    
    This resolves a regression in the gzip module when reading more than UINT_MAX
    or LONG_MAX bytes in one call, introduced by revision 62723172412c.
    e99e9776
zlibmodule.c 40.7 KB