diff --git a/Lib/test/crashers/iter.py b/Lib/test/crashers/iter.py
new file mode 100644
index 0000000..081dcbc
--- /dev/null
+++ b/Lib/test/crashers/iter.py
@@ -0,0 +1,53 @@
+# Calls to PyIter_Next, or direct calls to tp_iternext, on an object
+# which might no longer be an iterable because its 'next' method was
+# removed.  These are all variants of Issue3720.
+
+"""
+Run this script with an argument between 1 and <N> to test for
+different crashes.
+"""
+N = 8
+
+import sys
+
+class Foo(object):
+    def __iter__(self):
+        return self
+    def next(self):
+        del Foo.next
+        return (1, 2)
+
+def case1():
+    list(enumerate(Foo()))
+
+def case2():
+    x, y = Foo()
+
+def case3():
+    filter(None, Foo())
+
+def case4():
+    map(None, Foo(), Foo())
+
+def case5():
+    max(Foo())
+
+def case6():
+    sum(Foo(), ())
+
+def case7():
+    dict(Foo())
+
+def case8():
+    sys.stdout.writelines(Foo())
+
+# etc...
+
+
+if __name__ == '__main__':
+    if len(sys.argv) < 2:
+        print __doc__.replace('<N>', str(N))
+    else:
+        n = int(sys.argv[1])
+        func = globals()['case%d' % n]
+        func()
diff --git a/Lib/test/test_fileio.py b/Lib/test/test_fileio.py
index a676bc2..0404a19 100644
--- a/Lib/test/test_fileio.py
+++ b/Lib/test/test_fileio.py
@@ -100,6 +100,17 @@
             # should raise on closed file
             self.assertRaises(ValueError, method)
 
+    def testOpendir(self):
+        # Issue 3703: opening a directory should fill the errno
+        # Windows always returns "[Errno 13]: Permission denied
+        # Unix calls dircheck() and returns "[Errno 21]: Is a directory"
+        try:
+            _fileio._FileIO('.', 'r')
+        except IOError as e:
+            self.assertNotEqual(e.errno, 0)
+        else:
+            self.fail("Should have raised IOError")
+
 
 class OtherFileTests(unittest.TestCase):
 
