summaryrefslogtreecommitdiff
path: root/six.py
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
commit2f3566cbc39f88e66bb71cde1868df44c048ee4f (patch)
tree06e583f6c80f6f24ab79bcc49833dd3c189c95ad /six.py
parentc9834db0da2498519029387d8dfa53c42c6e4cc7 (diff)
parent12381bd661a1e9a3772f5acf54d3afe2f285a795 (diff)
downloadsix-git-2f3566cbc39f88e66bb71cde1868df44c048ee4f.tar.gz
Merged in krisvale/six (pull request #72)
Delete exception variables in frames that raise exceptions.
Diffstat (limited to 'six.py')
-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):