--- parser3/src/classes/op.C 2001/11/01 14:59:57 1.54 +++ parser3/src/classes/op.C 2001/11/05 11:46:21 1.58 @@ -2,9 +2,9 @@ Parser: parser @b operators. Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) - Author: Alexander Petrosyan (http://design.ru/paf) + Author: Alexander Petrosyan (http://paf.design.ru) - $Id: op.C,v 1.54 2001/11/01 14:59:57 paf Exp $ + $Id: op.C,v 1.58 2001/11/05 11:46:21 paf Exp $ */ #include "classes.h" @@ -176,17 +176,16 @@ static void _for(Request& r, const Strin Value& body_code=params->as_junction(3, "body must be code"); Value *delim_maybe_code=params->size()>4?¶ms->get(4):0; + if(to-from>=MAX_LOOPS) // too long loop? + throw Exception(0, 0, + &method_name, + "endless loop detected"); + bool need_delim=false; VInt *vint=new(pool) VInt(pool, 0); - int endless_loop_count=0; - Value& var_context=*body_code.get_junction()->wcontext; for(int i=from; i<=to; i++) { - if(++endless_loop_count>=MAX_LOOPS) // endless loop? - throw Exception(0, 0, - &method_name, - "endless loop detected"); vint->set_int(i); - var_context.put_element(var_name, vint); + r.root->put_element(var_name, vint); Value& processed_body=r.process(body_code); if(delim_maybe_code) { // delimiter set?