|
|
@@ -2396,6 +2396,10 @@ leave:
|
|
|
|
|
|
static qi_value_t *_qi_call(qi_state_t *state, qi_value_t *value,
|
|
|
qi_list_t *pargs, const char *debug_data) {
|
|
|
+ if (qi_list_length(state->calltrace) >= state->rlimit)
|
|
|
+ qi_throw_format(state, "max. recursion depth limit reached (%zu)",
|
|
|
+ state->rlimit);
|
|
|
+
|
|
|
if (value->type != QI_FUNCTION) {
|
|
|
qi_value_t *meta;
|
|
|
if ((meta =
|
|
|
@@ -2406,10 +2410,6 @@ static qi_value_t *_qi_call(qi_state_t *state, qi_value_t *value,
|
|
|
qi_throw_format(state, "cannot call %s", _qi_type(state, value));
|
|
|
}
|
|
|
|
|
|
- if (qi_list_length(state->calltrace) >= state->rlimit)
|
|
|
- qi_throw_format(state, "max. recursion depth limit reached (%zu)",
|
|
|
- state->rlimit);
|
|
|
-
|
|
|
if (value->value.function._this) {
|
|
|
qi_list_t *temp = !pargs ? qi_list_make() : qi_list_copy(pargs);
|
|
|
qi_list_insert(temp, 0, value->value.function._this);
|