]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
SF bug 705836: struct.pack of floats in non-native endian order
authorTim Peters <tim.peters@gmail.com>
Thu, 20 Mar 2003 18:32:13 +0000 (18:32 +0000)
committerTim Peters <tim.peters@gmail.com>
Thu, 20 Mar 2003 18:32:13 +0000 (18:32 +0000)
commitd50ade68ec240ea8ea12604809d8c70985263dce
tree7dd938bc5a9dcf40707839e518420804bbb3cd94
parent62364ffb80a7dab0477fe7dc7aec5478ab6afec2
SF bug 705836: struct.pack of floats in non-native endian order

pack_float, pack_double, save_float:  All the routines for creating
IEEE-format packed representations of floats and doubles simply ignored
that rounding can (in rare cases) propagate out of a long string of
1 bits.  At worst, the end-off carry can (by mistake) interfere with
the exponent value, and then unpacking yields a result wrong by a factor
of 2.  In less severe cases, it can end up losing more low-order bits
than intended, or fail to catch overflow *caused* by rounding.

Bugfix candidate, but I already backported this to 2.2.

In 2.3, this code remains in severe need of refactoring.
Lib/test/test_struct.py
Misc/NEWS
Modules/cPickle.c
Modules/structmodule.c