Known Errors in the Final Python 1.5 Release

These bugs have all been fixed in Python 1.5.1.

Here's a file containing the combined set of patches: patches.all.

  • Two bugs with import statements in Tools/versioncheck/ need to be fixed before it can work. See versioncheck.1.txt.

  • A bug in re.split() (and re.RegexObject.split()) fails to implement the maxsplit option. See re.1.txt.

  • A bug in re.MatchObject.groups() returns a single string instead of a tuple when there is only one group. Even though this behaviour is currently documented it is deemed a mistake. See re.2.txt.

  • (SGI specific:) Gary Herron (gjh@aw.sgi.com) reports that an optimizer bug causes the new `re' module to fail on some SGI configurations, all with the MIPSpro 7.1 compiler. His short term solution is to compile `Modules/pypcre.c' without optimization:
    cc -n32 -I./../Include -I.. -DHAVE_CONFIG_H -c ./pypcre.c
    More recently, Paul Miller (paul@ra.avid.com) reports no errors with the MIPSpro 7.2.1 compiler.

  • A bug in urllib.py retrieves files using the FTP protocol in text mode instead of in binary mode. For a fix, see urllib.1.txt.

  • A bug in urllib.py caused a traceback when a 401 error (authentication required) was encountered.For a fix, see urllib.2.txt.

  • On DEC OSF systems, the build aborts at the line
    # dgux rule not included
    in the Makefile. As a workaround, remove this line where it occurs in the Makefile(s).

  • On SunOS 4.x, the build breaks with an obscure error message about the syntax of shared libraries. To fix this, edit Modules/Makefile and replace "-L.. -lpython1.5" with "../libpython1.5.a" .

  • A long-standing bug in the gauss() function in random.py has been discovered by Mike Miller; Lambert Meertens provided the fix. See random.1.txt.

  • A long-standing bug in the tokenizer code has finally hit the dust. This was usually reported only on AIX, but the bug is actually present on all platforms. Thanks to Vladimir Marangozov for the fine detective work that discovered the cause of the crash, and thanks to Robin Friedrich for first reporting it. See tokenizer.1.txt.

  • Here's another jewel found by Vladimir Marangozov. Another long-standing AIX specific problem was a bug in the IBM optimizer that caused the tokenizer to complain about inconsistent indents. This appears to be caused by a bug in the loop unrolling technique used by the compiler, activated by default with "-Ox". A simple swap of two statements will avoid triggering this optimizer bug. See tokenizer.2.txt.

  • The function rfc822.mktime_tz() has a sign bug. See rfc822.1.txt.

  • A bug in PCRE could cause core dumps in patterns such as '((a)*)*'. Andrew Kuchling posted a fix to the string-sig. See pypcre.1.txt.

  • David Ascher discovered a bug in the quicksort code used by the sort() method of list objects: it can cause a core dump. See listobject.1.txt.

  • Andrew Dalke reported the following bug:

    There appears to be a bug in re.sub. Here's an example:

    >>> import re
    >>> re.sub( r'^\s*', 'X', ' test')
    'XtXeXsXtX'
    
    I expected ' test' to become 'Xtest'. The workaround for us is
    >>> re.sub( r'^\s+', 'X', ' test')
    'Xtest'
    

    Andrew Kuchling provided a patch (for pcremodule.c, pcre.h and pypcre.c), see pcre.1.txt.

  • (Windows only) the module ntpath.py contains code that breaks with certain locale settings. For a patch, see ntpath.1.txt. Note that this patch also changes the behavior of normpath() -- it will no longer map to lowercase.

  • Ben Jackson and Roger Burnham found two different bugs in the file reading code. One causes f.read() occasionally to return with less than the contents of the whole file; the other can cause crashes (only observed on Windows). For a patch that fixes both problems, see fileobject.1.txt.

  • Andrew Kuchling provided a patch for pcremodule.c that changes the way escapes are handled in the replacement string of re.sub and re.subn. An unknown escape like \s is currently treated as just an 's', which is different from the way unknown escapes are usually treated in Python's string literals. This patch modifies the behaviour so that the \ is preserved, and \s results in '\s'. See pcre.2.txt.

  • Ron Klatchko discovered a bug in shelve.close() -- it would take a long time to close the database. Here's a fix: shelve.1.txt.

  • The trick employed by the code.py module to distinguish between incomplete input and incorrect input, was broken by the new style exceptions. Here's a fix: code.1.txt.

  • Some bugs in the strop module: a missing return and some missing bounds checking when searching for an empty string and returning a trivial result. Here's a combined fix: strop.1.txt.

  • The error handling when sys.stdout was closed wasn't always right. Here's a fix (that fixes a few other problems too): pythonrun.1.txt.

  • There was a bug in abstract.c that made the ** operator and pow() function fail for NumPy arrays. Here's the fix (thanks to Paul Dubois): abstract.1.txt.