txlyre 4 小時之前
父節點
當前提交
552bc075fc
共有 1 個文件被更改,包括 4 次插入4 次删除
  1. 4 4
      qirt.c

+ 4 - 4
qirt.c

@@ -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);