|
|
| version 1.275, 2026/09/25 17:03:52 | version 1.276, 2026/09/26 17:41:10 |
|---|---|
| Line 147 private: | Line 147 private: |
| /// endless execute(execute(... preventing counter | /// endless execute(execute(... preventing counter |
| int anti_endless_execute_recursion; | int anti_endless_execute_recursion; |
| int execute_recursion_limit; | |
| void recursion_limit_reached(); | |
| ///@} | ///@} |
| Line 243 public: | Line 245 public: |
| /// execute ops with anti-recursion check | /// execute ops with anti-recursion check |
| void recursion_checked_execute(ArrayOperation& ops) { | void recursion_checked_execute(ArrayOperation& ops) { |
| if(++anti_endless_execute_recursion>=pa_execute_recursion_limit) { | if(++anti_endless_execute_recursion>=execute_recursion_limit) |
| anti_endless_execute_recursion=0; // give @exception a chance | recursion_limit_reached(); |
| throw Exception(PARSER_RUNTIME, 0, "call canceled - endless recursion detected"); | |
| } | |
| execute(ops); // execute it | execute(ops); // execute it |
| anti_endless_execute_recursion--; | anti_endless_execute_recursion--; |
| } | } |