Merged revisions 65780,65782,65785,65809,65812,65834,65846,65859,65861 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r65780 | antoine.pitrou | 2008-08-17 15:15:07 -0500 (Sun, 17 Aug 2008) | 3 lines

  #3580: fix a failure in test_os
........
  r65782 | benjamin.peterson | 2008-08-17 15:33:45 -0500 (Sun, 17 Aug 2008) | 1 line

  set svn:executable on a script
........
  r65785 | amaury.forgeotdarc | 2008-08-17 16:05:18 -0500 (Sun, 17 Aug 2008) | 3 lines

  Fix a refleak in bytearray.split and bytearray.rsplit, detected by
     regrtest.py -R:: test_bytes
........
  r65809 | nick.coghlan | 2008-08-18 07:42:46 -0500 (Mon, 18 Aug 2008) | 1 line

  Belated NEWS entry for r65642
........
  r65812 | nick.coghlan | 2008-08-18 08:32:19 -0500 (Mon, 18 Aug 2008) | 1 line

  Fix typo
........
  r65834 | amaury.forgeotdarc | 2008-08-18 14:23:47 -0500 (Mon, 18 Aug 2008) | 4 lines

  #2234 distutils failed with mingw binutils 2.18.50.20080109.
  Be less strict when parsing these version numbers,
  they don't necessarily follow the python numbering scheme.
........
  r65846 | georg.brandl | 2008-08-18 18:09:49 -0500 (Mon, 18 Aug 2008) | 2 lines

  Fix grammar.
........
  r65859 | thomas.heller | 2008-08-19 12:47:13 -0500 (Tue, 19 Aug 2008) | 2 lines

  Fix strange character in the docstring.
........
  r65861 | benjamin.peterson | 2008-08-19 12:59:23 -0500 (Tue, 19 Aug 2008) | 1 line

  get unparse to at least unparse its self
........
diff --git a/Demo/parser/unparse.py b/Demo/parser/unparse.py
index 6582487..d53a6c4 100644
--- a/Demo/parser/unparse.py
+++ b/Demo/parser/unparse.py
@@ -186,7 +186,7 @@
         self.dispatch(t.finalbody)
         self.leave()
 
-    def _excepthandler(self, t):
+    def _ExceptHandler(self, t):
         self.fill("except")
         if t.type:
             self.write(" ")
@@ -213,7 +213,7 @@
 
     def _FunctionDef(self, t):
         self.write("\n")
-        for deco in t.decorators:
+        for deco in t.decorator_list:
             self.fill("@")
             self.dispatch(deco)
         self.fill("def "+t.name + "(")
diff --git a/Doc/c-api/object.rst b/Doc/c-api/object.rst
index 9851825..3eb83f5 100644
--- a/Doc/c-api/object.rst
+++ b/Doc/c-api/object.rst
@@ -261,7 +261,7 @@
 
    Set a TypeError indicating that ``type(o)`` is not hashable and return ``-1``.
    This function receives special treatment when stored in a ``tp_hash`` slot,
-   allowing a type to explicit indicate to the interpreter that it is not
+   allowing a type to explicitly indicate to the interpreter that it is not
    hashable.
 
    .. versionadded:: 2.6
diff --git a/Doc/library/threading.rst b/Doc/library/threading.rst
index 4269b25..b5f997e 100644
--- a/Doc/library/threading.rst
+++ b/Doc/library/threading.rst
@@ -14,7 +14,7 @@
 
 .. note::
 
-   Some name ``camelCase`` names have been converted to their underscored
+   Some ``camelCase`` names have been converted to their underscored
    equivalents. Others have been replaced by properties.  Using the old methods
    in 2.6 will trigger a :exc:`DeprecationWarning` when Python is run with the
    :option:`-3` flag and a full :exc:`DeprecationWarning` in 3.0.  The old names
diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py
index da2c74a..ea4c797 100644
--- a/Lib/distutils/cygwinccompiler.py
+++ b/Lib/distutils/cygwinccompiler.py
@@ -400,7 +400,7 @@
     """ Try to find out the versions of gcc, ld and dllwrap.
         If not possible it returns None for it.
     """
-    from distutils.version import StrictVersion
+    from distutils.version import LooseVersion
     from distutils.spawn import find_executable
     import re
 
@@ -411,7 +411,7 @@
         out.close()
         result = re.search('(\d+\.\d+(\.\d+)*)', out_string, re.ASCII)
         if result:
-            gcc_version = StrictVersion(result.group(1))
+            gcc_version = LooseVersion(result.group(1))
         else:
             gcc_version = None
     else:
@@ -423,7 +423,7 @@
         out.close()
         result = re.search('(\d+\.\d+(\.\d+)*)', out_string, re.ASCII)
         if result:
-            ld_version = StrictVersion(result.group(1))
+            ld_version = LooseVersion(result.group(1))
         else:
             ld_version = None
     else:
@@ -435,7 +435,7 @@
         out.close()
         result = re.search(' (\d+\.\d+(\.\d+)*)', out_string, re.ASCII)
         if result:
-            dllwrap_version = StrictVersion(result.group(1))
+            dllwrap_version = LooseVersion(result.group(1))
         else:
             dllwrap_version = None
     else:
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index ca23dba..3dffcb2 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -318,7 +318,7 @@
             try:
                 os.stat(r"c:\pagefile.sys")
             except WindowsError as e:
-                if e == 2: # file does not exist; cannot run test
+                if e.errno == 2: # file does not exist; cannot run test
                     return
                 self.fail("Could not stat pagefile.sys")
 
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index c8dfc24..8abf0ff 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -913,7 +913,7 @@
 will be the current size of the file when mmap is called.\n\
 flags specifies the nature of the mapping. MAP_PRIVATE creates a\n\
 private copy-on-write mapping, so changes to the contents of the mmap\n\
-object will be private to this process, and MAP_SHARED`creates a mapping\n\
+object will be private to this process, and MAP_SHARED creates a mapping\n\
 that's shared with all other processes mapping the same areas of the file.\n\
 The default value is MAP_SHARED.\n\
 \n\
diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c
index dfe0a86..da11249 100644
--- a/Objects/bytearrayobject.c
+++ b/Objects/bytearrayobject.c
@@ -2215,8 +2215,11 @@
         PyBuffer_Release(&vsub);
         return NULL;
     }
-    if (n == 1)
-        return split_char(s, len, sub[0], maxsplit);
+    if (n == 1) {
+        list = split_char(s, len, sub[0], maxsplit);
+        PyBuffer_Release(&vsub);
+        return list;
+    }
 
     list = PyList_New(PREALLOC_SIZE(maxsplit));
     if (list == NULL) {
@@ -2447,8 +2450,11 @@
         PyBuffer_Release(&vsub);
         return NULL;
     }
-    else if (n == 1)
-        return rsplit_char(s, len, sub[0], maxsplit);
+    else if (n == 1) {
+        list = rsplit_char(s, len, sub[0], maxsplit);
+        PyBuffer_Release(&vsub);
+        return list;
+    }
 
     list = PyList_New(PREALLOC_SIZE(maxsplit));
     if (list == NULL) {
diff --git a/Tools/scripts/idle b/Tools/scripts/idle
old mode 100644
new mode 100755