diff options
author | Guido van Rossum <guido@python.org> | 2003-01-30 06:37:41 +0000 |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2003-01-30 06:37:41 +0000 |
commit | 9b40e804c79cef8dd240b734589e7caffd8ee4bd (patch) | |
tree | d3ca0eee59e25084d0619474170643a19d164c1a /Python/modsupport.c | |
parent | 4fba220f4ad9203894ef95512f8c9cc5593c5567 (diff) | |
download | cpython-git-9b40e804c79cef8dd240b734589e7caffd8ee4bd.tar.gz |
There was a subtle big in save_newobj(): it used self.save_global(t)
on the type instead of self.save(t). This defeated the purpose of
NEWOBJ, because it didn't generate a BINGET opcode when t was already
memoized; but moreover, it would generate multiple BINPUT opcodes for
the same type! pickletools.dis() doesn't like this.
How I found this? I was playing with picklesize.py in the datetime
sandbox, and noticed that protocol 2 pickles for multiple objects were
in fact larger than protocol 1 pickles! That was suspicious, so I
decided to disassemble one of the pickles.
This really needs a unit test, but I'm exhausted. I'll be late for
work as it is. :-(
Diffstat (limited to 'Python/modsupport.c')
0 files changed, 0 insertions, 0 deletions