blueloveTH 1 yıl önce
ebeveyn
işleme
634ad16d45
2 değiştirilmiş dosya ile 2 ekleme ve 0 silme
  1. 1 0
      include/pocketpy/bindings.h
  2. 1 0
      src/vm.cpp

+ 1 - 0
include/pocketpy/bindings.h

@@ -89,6 +89,7 @@ PyObject* VM::bind(PyObject* obj, const char* sig, const char* docstring, Ret(T:
 template<typename T, typename F, bool ReadOnly>
 PyObject* VM::bind_field(PyObject* obj, const char* name, F T::*field){
     static_assert(!std::is_reference_v<F>);
+    PK_ASSERT(is_type(obj, tp_type));
     std::string_view name_sv(name); int pos = name_sv.find(':');
     if(pos > 0) name_sv = name_sv.substr(0, pos);
     auto fget = [](VM* vm, ArgsView args) -> PyObject*{

+ 1 - 0
src/vm.cpp

@@ -1269,6 +1269,7 @@ PyObject* VM::bind(PyObject* obj, const char* sig, const char* docstring, Native
 }
 
 PyObject* VM::bind_property(PyObject* obj, const char* name, NativeFuncC fget, NativeFuncC fset){
+    PK_ASSERT(is_type(obj, tp_type));
     std::string_view name_sv(name); int pos = name_sv.find(':');
     if(pos > 0) name_sv = name_sv.substr(0, pos);
     PyObject* _0 = heap.gcnew<NativeFunc>(tp_native_func, fget, 1, false);