diff options
author | Benjamin Peterson <benjamin@python.org> | 2016-04-16 12:31:54 -0700 |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2016-04-16 12:31:54 -0700 |
commit | 05abec55d0bca8f2298a13560739d3a7802ffd48 (patch) | |
tree | 06e583f6c80f6f24ab79bcc49833dd3c189c95ad | |
parent | eeaaea67bd393ed1adfd88b0617dd2398cbe2c7b (diff) | |
parent | 7be05cc258a15d1bb48553d744ade89cfa354040 (diff) | |
download | six-05abec55d0bca8f2298a13560739d3a7802ffd48.tar.gz |
Merged in krisvale/six (pull request #72)
Delete exception variables in frames that raise exceptions.
-rw-r--r-- | six.py | 32 |
1 files changed, 22 insertions, 10 deletions
@@ -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): |