Issue 1611753: can't pickle NAN's in binary mode (original) (raw)

I think the problem is that pack(">d", float("nan")) does not work. Same for Inf. This works fine with pickle in ascii mode. I tried this on SuSE 10.0, x86_64.

Python 2.4.2 (#2, Sep 10 2006, 23:53:27) [GCC 4.1.1] on linux2 Type "help", "copyright", "credits" or "license" for more information.

import pickle foo = [1, 2, float("nan")] foo [1, 2, nan] fp = file("/tmp/xxx", "wb") pickle.dump(foo, fp, -1) Traceback (most recent call last): File "", line 1, in ? File "/home/software/64/lib/python2.4/pickle.py", line 1382, in dump Pickler(file, protocol, bin).dump(obj) File "/home/software/64/lib/python2.4/pickle.py", line 231, in dump self.save(obj) File "/home/software/64/lib/python2.4/pickle.py", line 293, in save f(self, obj) # Call unbound method with explicit self File "/home/software/64/lib/python2.4/pickle.py", line 614, in save_list self._batch_appends(iter(obj)) File "/home/software/64/lib/python2.4/pickle.py", line 647, in _batch_appends save(x) File "/home/software/64/lib/python2.4/pickle.py", line 293, in save f(self, obj) # Call unbound method with explicit self File "/home/software/64/lib/python2.4/pickle.py", line 489, in save_float self.write(BINFLOAT + pack('>d', obj)) SystemError: frexp() result out of range