Um, I thought I'd already checked this in.
Anyway, this is the changes to the with-statement
so that __exit__ must return a true value in order
for a pending exception to be ignored.
The PEP (343) is already updated.
diff --git a/Lib/compiler/pyassem.py b/Lib/compiler/pyassem.py
index b59661f..82ff396 100644
--- a/Lib/compiler/pyassem.py
+++ b/Lib/compiler/pyassem.py
@@ -779,7 +779,7 @@
         'SETUP_EXCEPT': 3,
         'SETUP_FINALLY': 3,
         'FOR_ITER': 1,
-        'WITH_CLEANUP': 3,
+        'WITH_CLEANUP': -1,
         }
     # use pattern match
     patterns = [
diff --git a/Lib/compiler/pycodegen.py b/Lib/compiler/pycodegen.py
index a1236de..2b3a24f 100644
--- a/Lib/compiler/pycodegen.py
+++ b/Lib/compiler/pycodegen.py
@@ -858,8 +858,6 @@
         self.nextBlock(final)
         self.setups.push((END_FINALLY, final))
         self.emit('WITH_CLEANUP')
-        self.emit('CALL_FUNCTION', 3)
-        self.emit('POP_TOP')
         self.emit('END_FINALLY')
         self.setups.pop()
         self.__with_count -= 1