1. 23 Mar, 2002 11 commits
    • Tim Peters's avatar
      Give Python a debug-mode pymalloc, much as sketched on Python-Dev. · ddea208b
      Tim Peters authored
      When WITH_PYMALLOC is defined, define PYMALLOC_DEBUG to enable the debug
      allocator.  This can be done independent of build type (release or debug).
      A debug build automatically defines PYMALLOC_DEBUG when pymalloc is
      enabled.  It's a detected error to define PYMALLOC_DEBUG when pymalloc
      isn't enabled.
      
      Two debugging entry points defined only under PYMALLOC_DEBUG:
      
      + _PyMalloc_DebugCheckAddress(const void *p) can be used (e.g., from gdb)
        to sanity-check a memory block obtained from pymalloc.  It sprays
        info to stderr (see next) and dies via Py_FatalError if the block is
        detectably damaged.
      
      + _PyMalloc_DebugDumpAddress(const void *p) can be used to spray info
        about a debug memory block to stderr.
      
      A tiny start at implementing "API family" checks isn't good for
      anything yet.
      
      _PyMalloc_DebugRealloc() has been optimized to do little when the new
      size is <= old size.  However, if the new size is larger, it really
      can't call the underlying realloc() routine without either violating its
      contract, or knowing something non-trivial about how the underlying
      realloc() works.  A memcpy is always done in this case.
      
      This was a disaster for (and only) one of the std tests:  test_bufio
      creates single text file lines up to a million characters long.  On
      Windows, fileobject.c's get_line() uses the horridly funky
      getline_via_fgets(), which keeps growing and growing a string object
      hoping to find a newline.  It grew the string object 1000 bytes each
      time, so for a million-character string it took approximately forever
      (I gave up after a few minutes).
      
      So, also:
      
      fileobject.c, getline_via_fgets():  When a single line is outrageously
      long, grow the string object at a mildly exponential rate, instead of
      just 1000 bytes at a time.
      
      That's enough so that a debug-build test_bufio finishes in about 5 seconds
      on my Win98SE box.  I'm curious to try this on Win2K, because it has very
      different memory behavior than Win9X, and test_bufio always took a factor
      of 10 longer to complete on Win2K.  It *could* be that the endless
      reallocs were simply killing it on Win2K even in the release build.
      ddea208b
    • Skip Montanaro's avatar
      Only AttributeError can be raised in this situation - on systems without · 91cc17d2
      Skip Montanaro authored
      getuid or getpid.  posix_getuid & posix_getpid never raise exceptions when
      called with no args.
      91cc17d2
    • Skip Montanaro's avatar
      3c4a629b
    • Skip Montanaro's avatar
    • Skip Montanaro's avatar
      3c643d8d
    • Skip Montanaro's avatar
      added RFC 2396 tests from Aaron Swartz included in bug # 450225. · 6ec967d0
      Skip Montanaro authored
      converted to use unittest
      6ec967d0
    • Skip Montanaro's avatar
    • Tim Peters's avatar
      SF bug 533234: tm_isdst > 1 Passed to strftime. · 0c2c8e77
      Tim Peters authored
      One more time on this turkey, but duller instead of cleverer.
      
      Curious:  The docs say __getslice__ has been deprecated since 2.0, but
      list.__getitem__ still doesn't work if you pass it a slice.  This makes
      it a lot clearer to emulate a list by *being* a list <wink>.
      
      Bugfix candidate.  Michael, just pile this patch on top of the others
      that went by -- no need to try to pick these apart.
      0c2c8e77
    • Neil Schemenauer's avatar
    • Tim Peters's avatar
      Just whitespace fiddling. · ce7fb9b5
      Tim Peters authored
      ce7fb9b5
    • Tim Peters's avatar
      Build obmalloc.c directly instead of #include'ing from object.c. · 1221c0a4
      Tim Peters authored
      Also move all _PyMalloc_XXX entry points into obmalloc.c.
      
      The Windows build works fine.
      The Unix build is changed here (Makefile.pre.in), but not tested.
      No other platform's build process has been fiddled.
      1221c0a4
  2. 22 Mar, 2002 25 commits
  3. 21 Mar, 2002 4 commits