1. 02 Feb, 2003 1 commit
    • Tim Peters's avatar
      cPickle.c: Full support for the new LONG1 and LONG4. Added comments. · ee1a53cb
      Tim Peters authored
      Assorted code cleanups; e.g., sizeof(char) is 1 by definition, so there's
      no need to do things like multiply by sizeof(char) in hairy malloc
      arguments.  Fixed an undetected-overflow bug in readline_file().
      
      longobject.c:  Fixed a really stupid bug in the new _PyLong_NumBits.
      
      pickle.py:  Fixed stupid bug in save_long():  When proto is 2, it
      wrote LONG1 or LONG4, but forgot to return then -- it went on to
      append the proto 1 LONG opcode too.
      Fixed equally stupid cancelling bugs in load_long1() and
      load_long4():  they *returned* the unpickled long instead of pushing
      it on the stack.  The return values were ignored.  Tests passed
      before only because save_long() pickled the long twice.
      
      Fixed bugs in encode_long().
      
      Noted that decode_long() is quadratic-time despite our hopes,
      because long(string, 16) is still quadratic-time in len(string).
      It's hex() that's linear-time.  I don't know a way to make decode_long()
      linear-time in Python, short of maybe transforming the 256's-complement
      bytes into marshal's funky internal format, and letting marshal decode
      that.  It would be more valuable to make long(string, 16) linear time.
      
      pickletester.py:  Added a global "protocols" vector so tests can try
      all the protocols in a sane way.  Changed test_ints() and test_unicode()
      to do so.  Added a new test_long(), but the tail end of it is disabled
      because it "takes forever" under pickle.py (but runs very quickly under
      cPickle:  cPickle proto 2 for longs is linear-time).
      ee1a53cb
  2. 01 Feb, 2003 15 commits
  3. 31 Jan, 2003 24 commits