Просмотр исходного кода

fix https://github.com/blueloveTH/pocketpy/issues/94

BLUELOVETH 2 лет назад
Родитель
Сommit
3148dab556
1 измененных файлов с 11 добавлено и 1 удалено
  1. 11 1
      src/gc.h

+ 11 - 1
src/gc.h

@@ -40,7 +40,12 @@ struct ManagedHeap{
     template<typename T>
     PyObject* gcnew(Type type, T&& val){
         using __T = Py_<std::decay_t<T>>;
+#if _WIN32
+        // https://github.com/blueloveTH/pocketpy/issues/94#issuecomment-1594784476
+        PyObject* obj = new(pool64.alloc<__T>()) Py_<std::decay_t<T>>(type, std::forward<T>(val));
+#else
         PyObject* obj = new(pool64.alloc<__T>()) __T(type, std::forward<T>(val));
+#endif
         gen.push_back(obj);
         gc_counter++;
         return obj;
@@ -49,7 +54,12 @@ struct ManagedHeap{
     template<typename T>
     PyObject* _new(Type type, T&& val){
         using __T = Py_<std::decay_t<T>>;
+#if _WIN32
+        // https://github.com/blueloveTH/pocketpy/issues/94#issuecomment-1594784476
+        PyObject* obj = new(pool64.alloc<__T>()) Py_<std::decay_t<T>>(type, std::forward<T>(val));
+#else
         PyObject* obj = new(pool64.alloc<__T>()) __T(type, std::forward<T>(val));
+#endif
         obj->gc.enabled = false;
         _no_gc.push_back(obj);
         return obj;
@@ -121,4 +131,4 @@ inline void FuncDecl::_gc_mark() const{
     for(int i=0; i<kwargs.size(); i++) OBJ_MARK(kwargs[i].value);
 }
 
-}   // namespace pkpy
+}   // namespace pkpy