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
