1. 02 Feb, 2003 5 commits
    • Raymond Hettinger's avatar
    • Tim Peters's avatar
      Tightened a too-generous assert. · efb9625b
      Tim Peters authored
      efb9625b
    • Tim Peters's avatar
      long(string, base) now takes time linear in len(string) when base is a · bf2674be
      Tim Peters authored
      power of 2.  Enabled the tail end of test_long() in pickletester.py
      because it no longer takes forever when run from test_pickle.py.
      bf2674be
    • Fred Drake's avatar
      Fix memory leak: free memory storing the content model passed to the · 06dd8cf5
      Fred Drake authored
      ElementDeclHandler by Expat.
      Fixes SF bug #676990.
      06dd8cf5
    • 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 20 commits