bug fixed
This commit is contained in:
parent
54a80df127
commit
b5ff32710e
|
@ -303,6 +303,7 @@ int nasal_runtime::before_for_loop(nasal_ast& node,int local_scope_addr)
|
||||||
int before_loop_node_type=node.get_type();
|
int before_loop_node_type=node.get_type();
|
||||||
switch(before_loop_node_type)
|
switch(before_loop_node_type)
|
||||||
{
|
{
|
||||||
|
case ast_null:break;
|
||||||
case ast_definition:definition(node,local_scope_addr);break;
|
case ast_definition:definition(node,local_scope_addr);break;
|
||||||
case ast_multi_assign:multi_assignment(node,local_scope_addr);break;
|
case ast_multi_assign:multi_assignment(node,local_scope_addr);break;
|
||||||
case ast_number:case ast_string:case ast_function:break;
|
case ast_number:case ast_string:case ast_function:break;
|
||||||
|
@ -323,6 +324,7 @@ int nasal_runtime::after_each_for_loop(nasal_ast& node,int local_scope_addr)
|
||||||
int node_type=node.get_type();
|
int node_type=node.get_type();
|
||||||
switch(node_type)
|
switch(node_type)
|
||||||
{
|
{
|
||||||
|
case ast_null:break;
|
||||||
case ast_definition:definition(node,local_scope_addr);break;
|
case ast_definition:definition(node,local_scope_addr);break;
|
||||||
case ast_multi_assign:multi_assignment(node,local_scope_addr);break;
|
case ast_multi_assign:multi_assignment(node,local_scope_addr);break;
|
||||||
case ast_number:case ast_string:case ast_function:break;
|
case ast_number:case ast_string:case ast_function:break;
|
||||||
|
@ -467,14 +469,11 @@ int nasal_runtime::loop_progress(nasal_ast& node,int local_scope_addr,bool allow
|
||||||
nasal_vm.gc_get(for_local_scope_addr).get_closure().add_scope();
|
nasal_vm.gc_get(for_local_scope_addr).get_closure().add_scope();
|
||||||
}
|
}
|
||||||
// for progress
|
// for progress
|
||||||
|
ret_state=before_for_loop(before_loop_node,for_local_scope_addr);
|
||||||
int condition_value_addr=calculation(condition_node,for_local_scope_addr);
|
int condition_value_addr=calculation(condition_node,for_local_scope_addr);
|
||||||
bool result=check_condition(condition_value_addr);
|
bool result=check_condition(condition_value_addr);
|
||||||
nasal_vm.del_reference(condition_value_addr);
|
nasal_vm.del_reference(condition_value_addr);
|
||||||
for(
|
for(;result;ret_state=after_each_for_loop(each_loop_do_node,for_local_scope_addr))
|
||||||
ret_state=before_for_loop(before_loop_node,for_local_scope_addr);
|
|
||||||
result;
|
|
||||||
ret_state=after_each_for_loop(each_loop_do_node,for_local_scope_addr)
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
if(ret_state==rt_error)
|
if(ret_state==rt_error)
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue