summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2016-04-16 12:31:54 -0700
committerBenjamin Peterson <benjamin@python.org>2016-04-16 12:31:54 -0700
commit05abec55d0bca8f2298a13560739d3a7802ffd48 (patch)
tree06e583f6c80f6f24ab79bcc49833dd3c189c95ad
parenteeaaea67bd393ed1adfd88b0617dd2398cbe2c7b (diff)
parent7be05cc258a15d1bb48553d744ade89cfa354040 (diff)
downloadsix-05abec55d0bca8f2298a13560739d3a7802ffd48.tar.gz
Merged in krisvale/six (pull request #72)
Delete exception variables in frames that raise exceptions.
-rw-r--r--six.py32
1 files changed, 22 insertions, 10 deletions
diff --git a/six.py b/six.py
index 6ca60a2..d35ec5b 100644
--- a/six.py
+++ b/six.py
@@ -679,11 +679,14 @@ if PY3:
exec_ = getattr(moves.builtins, "exec")
def reraise(tp, value, tb=None):
- if value is None:
- value = tp()
- if value.__traceback__ is not tb:
- raise value.with_traceback(tb)
- raise value
+ try:
+ if value is None:
+ value = tp()
+ if value.__traceback__ is not tb:
+ raise value.with_traceback(tb)
+ raise value
+ finally:
+ del value, tb
else:
def exec_(_code_, _globs_=None, _locs_=None):
@@ -699,19 +702,28 @@ else:
exec("""exec _code_ in _globs_, _locs_""")
exec_("""def reraise(tp, value, tb=None):
- raise tp, value, tb
+ try:
+ raise tp, value, tb
+ finally:
+ del tb
""")
if sys.version_info[:2] == (3, 2):
exec_("""def raise_from(value, from_value):
- if from_value is None:
- raise value
- raise value from from_value
+ try:
+ if from_value is None:
+ raise value
+ raise value from from_value
+ finally:
+ del value
""")
elif sys.version_info[:2] > (3, 2):
exec_("""def raise_from(value, from_value):
- raise value from from_value
+ try:
+ raise value from from_value
+ finally:
+ del value
""")
else:
def raise_from(value, from_value):