|
|
@@ -97,8 +97,7 @@ PyObject* VM::bind_field(PyObject* obj, const char* name, F T::*field){
|
|
|
F T::*field = lambda_get_userdata<F T::*>(args.begin());
|
|
|
return VAR(self.*field);
|
|
|
};
|
|
|
- PyObject* _0 = heap.gcnew<NativeFunc>(tp_native_func, fget, 1);
|
|
|
- PK_OBJ_GET(NativeFunc, _0).set_userdata(field);
|
|
|
+ PyObject* _0 = heap.gcnew<NativeFunc>(tp_native_func, fget, 1, field);
|
|
|
PyObject* _1 = vm->None;
|
|
|
if constexpr (!ReadOnly){
|
|
|
auto fset = [](VM* vm, ArgsView args){
|
|
|
@@ -107,8 +106,7 @@ PyObject* VM::bind_field(PyObject* obj, const char* name, F T::*field){
|
|
|
self.*field = py_cast<F>(vm, args[1]);
|
|
|
return vm->None;
|
|
|
};
|
|
|
- _1 = heap.gcnew<NativeFunc>(tp_native_func, fset, 2);
|
|
|
- PK_OBJ_GET(NativeFunc, _1).set_userdata(field);
|
|
|
+ _1 = heap.gcnew<NativeFunc>(tp_native_func, fset, 2, field);
|
|
|
}
|
|
|
PyObject* prop = VAR(Property(_0, _1));
|
|
|
obj->attr().set(StrName(name_sv), prop);
|