BLUELOVETH před 2 roky
rodič
revize
c0dc98042e
1 změnil soubory, kde provedl 7 přidání a 7 odebrání
  1. 7 7
      src/pocketpy_c.cpp

+ 7 - 7
src/pocketpy_c.cpp

@@ -5,11 +5,11 @@ using namespace pkpy;
 
 typedef int (*LuaStyleFuncC)(VM*);
 
-#define C_API_ASSERT(x) if(!(x)) { pkpy_error(vm_handle, "AssertionError", #x); return false; }
-
 #define PK_ASSERT_N_EXTRA_ELEMENTS(n) \
-    if(!has_n_extra_elements(vm, n)){ \
-        pkpy_error(vm_handle, "StackError", "not enough elements on stack"); \
+    int __ex_count = count_extra_elements(vm, n); \
+    if(__ex_count < n){ \
+        std::string msg = fmt("expected at least ", n, " elements, got ", __ex_count); \
+        pkpy_error(vm_handle, "StackError", msg.c_str()); \
         return false; \
     }
 
@@ -17,12 +17,12 @@ typedef int (*LuaStyleFuncC)(VM*);
     if(vm->_c.error != nullptr) \
         return false;
 
-static int has_n_extra_elements(VM* vm, int n){
+static int count_extra_elements(VM* vm, int n){
     if(vm->callstack.empty()){
-        return vm->s_data.size() >= n;
+        return vm->s_data.size();
     }
     PyObject** base = vm->top_frame()->_locals.end();
-    return vm->s_data._sp - base >= n;
+    return vm->s_data._sp - base;
 }
 
 static PyObject* stack_item(VM* vm, int index){