diff options
author | scoder <stefan_ml@behnel.de> | 2017-10-29 18:55:18 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-29 18:55:18 +0100 |
commit | fbb18722a6546e9e76cc8253023fd2689b010178 (patch) | |
tree | 6a2854a3756764e58da0da154bd849c1e8e38e0b | |
parent | cb69819af8d77f40f24c042fa7d617fdaef7b753 (diff) | |
parent | a85eaad1d9c47dfe0c0c7bef40c275d09fe4d72c (diff) | |
download | cython-fbb18722a6546e9e76cc8253023fd2689b010178.tar.gz |
Merge pull request #1960 from cython/dalcinl/fix-try-finally
Minor changes to try/finally code generation [should silence Coverity]
-rw-r--r-- | Cython/Compiler/Nodes.py | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/Cython/Compiler/Nodes.py b/Cython/Compiler/Nodes.py index eb933fc77..07588940d 100644 --- a/Cython/Compiler/Nodes.py +++ b/Cython/Compiler/Nodes.py @@ -7139,6 +7139,7 @@ class TryFinallyStatNode(StatNode): code.putln('}') if preserve_error: + code.put_label(new_error_label) code.putln('/*exception exit:*/{') if not self.in_generator: code.putln("__Pyx_PyThreadState_declare") @@ -7156,7 +7157,6 @@ class TryFinallyStatNode(StatNode): exc_vars = tuple([ code.funcstate.allocate_temp(py_object_type, manage_ref=False) for _ in range(6)]) - code.put_label(new_error_label) self.put_error_catcher( code, temps_to_clean_up, exc_vars, exc_lineno_cnames, exc_filename_cname) finally_old_labels = code.all_new_labels() @@ -7249,11 +7249,11 @@ class TryFinallyStatNode(StatNode): code.globalstate.use_utility_code(get_exception_utility_code) code.globalstate.use_utility_code(swap_exception_utility_code) - code.putln(' '.join(["%s = 0;"]*len(exc_vars)) % exc_vars) if self.is_try_finally_in_nogil: code.put_ensure_gil(declare_gilstate=False) code.putln("__Pyx_PyThreadState_assign") + code.putln(' '.join(["%s = 0;" % var for var in exc_vars])) for temp_name, type in temps_to_clean_up: code.put_xdecref_clear(temp_name, type) @@ -7298,7 +7298,7 @@ class TryFinallyStatNode(StatNode): if self.is_try_finally_in_nogil: code.put_release_ensured_gil() - code.putln(' '.join(["%s = 0;"]*len(exc_vars)) % exc_vars) + code.putln(' '.join(["%s = 0;" % var for var in exc_vars])) if exc_lineno_cnames: code.putln("%s = %s; %s = %s; %s = %s;" % ( Naming.lineno_cname, exc_lineno_cnames[0], |