Ver Fonte

Update common.h

blueloveTH há 1 ano atrás
pai
commit
2d3abde352
1 ficheiros alterados com 4 adições e 2 exclusões
  1. 4 2
      include/pocketpy/common.h

+ 4 - 2
include/pocketpy/common.h

@@ -188,15 +188,17 @@ struct PyVar final{
 
     // uninitialized
     PyVar() = default;
+
+    /* We must initialize all members to allow == operator to work correctly */
     // constexpr initialized
     constexpr PyVar(const const_sso_var&, Type type, int value): type(type), is_sso(true), flags(0), _0(value), _1(0) {}
     // zero initialized
     constexpr PyVar(std::nullptr_t): type(0), is_sso(false), flags(0), _0(0), _1(0) {}
     // PyObject* initialized (is_sso = false)
-    PyVar(Type type, PyObject* p): type(type), is_sso(false), flags(0), _1(reinterpret_cast<i64>(p)) {}
+    PyVar(Type type, PyObject* p): type(type), is_sso(false), flags(0), _0(0), _1(reinterpret_cast<i64>(p)) {}
     // SSO initialized (is_sso = true)
     template<typename T>
-    PyVar(Type type, T value): type(type), is_sso(true), flags(0) {
+    PyVar(Type type, T value): type(type), is_sso(true), flags(0), _0(0), _1(0) {
         static_assert(sizeof(T) <= 12, "SSO size exceeded");
         as<T>() = value;
     }