From d185614ed7852f1ed2f94c334b5f39499bf78c39 Mon Sep 17 00:00:00 2001 From: "pengtao.pt" Date: Wed, 9 Jan 2019 21:05:54 +0800 Subject: [PATCH] [Weex][Core] bugfix try catch exception must clean the context error value --- weex_core/Source/qking/core/vm/qking_vm.c | 3 ++- weex_core/Source/qking/core/vm/vm_exec_state.c | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/weex_core/Source/qking/core/vm/qking_vm.c b/weex_core/Source/qking/core/vm/qking_vm.c index ff28e4aac7..5e8b3aa4a1 100644 --- a/weex_core/Source/qking/core/vm/qking_vm.c +++ b/weex_core/Source/qking/core/vm/qking_vm.c @@ -1827,7 +1827,8 @@ static ecma_value_t vm_run_loop( QKING_ASSERT(GET_OP_CODE(pc[-1]) == OP_CATCH); ecma_register_t *register_error = registers_p + (uint32_t)(GET_ARG_A(pc[-1])); ecma_fast_free_value(register_error->var); - register_error->var = ecma_copy_value(QKING_CONTEXT(error_value)); + register_error->var = QKING_CONTEXT(error_value); + QKING_CONTEXT(error_value) = ECMA_VALUE_UNDEFINED; ecma_object_t *catch_env_p = ecma_create_decl_lex_env(frame_ctx_p->lex_env_p); frame_ctx_p->lex_env_p = catch_env_p; } else { diff --git a/weex_core/Source/qking/core/vm/vm_exec_state.c b/weex_core/Source/qking/core/vm/vm_exec_state.c index d85035ee27..cd132f583d 100755 --- a/weex_core/Source/qking/core/vm/vm_exec_state.c +++ b/weex_core/Source/qking/core/vm/vm_exec_state.c @@ -135,6 +135,7 @@ bool qking_vm_exec_state_execute(qking_vm_exec_state_t *exec_state_p, ecma_value QKING_TO_LOG_STR_FINISH(err_str); qking_release_value(err_ret_value); } else { + // todo process context error value ecma_free_value(QKING_CONTEXT (error_value)); QKING_CONTEXT (error_value) = ECMA_VALUE_UNDEFINED; if (err_value) {