From 99e1ba77eab1f04e49e1fc93e211859abde482cd Mon Sep 17 00:00:00 2001 From: Valk Richard Li <48872266+ValKmjolnir@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:34:28 -0700 Subject: [PATCH] bug fixed --- version3.0/nasal_misc.h | 2 ++ version3.0/nasal_runtime.h | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/version3.0/nasal_misc.h b/version3.0/nasal_misc.h index b266027..ae9c33c 100644 --- a/version3.0/nasal_misc.h +++ b/version3.0/nasal_misc.h @@ -196,6 +196,8 @@ std::string trans_number_to_string(double number) trans_num_string+='-'; number=-number; } + if(number==0) + return "0"; double integer_bit=1; while(number>=integer_bit) integer_bit*=10; diff --git a/version3.0/nasal_runtime.h b/version3.0/nasal_runtime.h index 73cd031..d13ccf7 100644 --- a/version3.0/nasal_runtime.h +++ b/version3.0/nasal_runtime.h @@ -490,13 +490,14 @@ int nasal_runtime::loop_progress(nasal_ast& node,int local_scope_addr,bool allow int condition_value_addr=calculation(condition_node,for_local_scope_addr); bool result=check_condition(condition_value_addr); nasal_vm.del_reference(condition_value_addr); - for(;result;ret_state=after_each_for_loop(each_loop_do_node,for_local_scope_addr)) + while(result) { if(ret_state==rt_error) break; ret_state=block_progress(run_block_node,for_local_scope_addr,allow_return); if(ret_state==rt_error || ret_state==rt_return || ret_state==rt_break || error) break; + ret_state=after_each_for_loop(each_loop_do_node,for_local_scope_addr); condition_value_addr=calculation(condition_node,for_local_scope_addr); result=check_condition(condition_value_addr); nasal_vm.del_reference(condition_value_addr);