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);