From 95088f6bfaad8af476198f5e7d52baf06b86edf1 Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Tue, 27 Jul 2021 12:07:42 +0200 Subject: [PATCH] [Core] Make enum variant cast and encoding 64 bits This should fix various issues where retrieving enum values from scripting languages would result in corrupted values (where 32 bits were valid, and the other 32 random data). --- core/variant/binder_common.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/variant/binder_common.h b/core/variant/binder_common.h index ef5867c6856..3cb2a6bfb54 100644 --- a/core/variant/binder_common.h +++ b/core/variant/binder_common.h @@ -69,17 +69,17 @@ struct VariantCaster { template <> \ struct VariantCaster { \ static _FORCE_INLINE_ m_enum cast(const Variant &p_variant) { \ - return (m_enum)p_variant.operator int(); \ + return (m_enum)p_variant.operator int64_t(); \ } \ }; \ template <> \ struct PtrToArg { \ _FORCE_INLINE_ static m_enum convert(const void *p_ptr) { \ - return m_enum(*reinterpret_cast(p_ptr)); \ + return m_enum(*reinterpret_cast(p_ptr)); \ } \ typedef int64_t EncodeT; \ _FORCE_INLINE_ static void encode(m_enum p_val, const void *p_ptr) { \ - *(int *)p_ptr = p_val; \ + *(int64_t *)p_ptr = p_val; \ } \ };