summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristj?n Valur J?nsson <kristjan@atmoselect.com>2016-01-15 13:31:20 +0000
committerKristj?n Valur J?nsson <kristjan@atmoselect.com>2016-01-15 13:31:20 +0000
commit7be05cc258a15d1bb48553d744ade89cfa354040 (patch)
tree9ac646740916ab29f990d29023ca9cc4cbc4b263
parent1a114258087b53e542d75d98e50182dcfed790eb (diff)
downloadsix-7be05cc258a15d1bb48553d744ade89cfa354040.tar.gz
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 56e4272..b344720 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):