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 (email@example.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 (firstname.lastname@example.org) 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
- 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
- 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')
I expected ' test' to become 'Xtest'. The workaround for us is
>>> re.sub( r'^\s+', 'X', ' test')
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
- 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'.
- 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