parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

поднимая старую тему о file:list и рекурсии

кОт 19.11.2003 13:57

Странная ситуация - есть вот такой код:
@prepareList[path;ext;create_new_list] [list;dirs]

    ^if(!def $ext){ $ext[html] }
    ^if(!def $create_new_list){ $create_new_list[1] }
    $dirs[^table::create{name}]
    $list[^file:list[$path]]

    ^if($create_new_list){ <ul> }
    ^list.menu{
        $uri[${path}$list.name]
        ^if(-d $uri){
            ^dirs.append{$uri/}
        }{
            ^if(^uri.match[\.$ext^$]){
#                <li>^href[$uri;^getDescription[$uri]]</li>
                <li>$uri</li>
            }
        }
    }
    ^dirs.menu{
        ^prepareList[$dirs.name;$ext;0]
    }
    ^if($create_new_list){ </ul> }
#end @prepareList[]
Выполняется замечательно, если подкаталогов нет вообще или же есть, но один. Если подкаталогов много, то parser падает с ошибкой call canceled - endless recursion detected.
В чем могут быть грабли?