Zero initialize all pointer class and struct members
This prevents the pitfall of UB when checking if they have been assigned something valid by comparing to nullptr.
This commit is contained in:
parent
53317bbe14
commit
f8ab79e68a
258 changed files with 2398 additions and 2421 deletions
|
|
@ -94,16 +94,16 @@ private:
|
|||
|
||||
UnhandledExceptionPolicy unhandled_exception_policy;
|
||||
|
||||
MonoDomain *root_domain;
|
||||
MonoDomain *scripts_domain;
|
||||
MonoDomain *root_domain = nullptr;
|
||||
MonoDomain *scripts_domain = nullptr;
|
||||
|
||||
HashMap<int32_t, HashMap<String, GDMonoAssembly *>> assemblies;
|
||||
|
||||
GDMonoAssembly *corlib_assembly;
|
||||
GDMonoAssembly *project_assembly;
|
||||
GDMonoAssembly *corlib_assembly = nullptr;
|
||||
GDMonoAssembly *project_assembly = nullptr;
|
||||
#ifdef TOOLS_ENABLED
|
||||
GDMonoAssembly *tools_assembly;
|
||||
GDMonoAssembly *tools_project_editor_assembly;
|
||||
GDMonoAssembly *tools_assembly = nullptr;
|
||||
GDMonoAssembly *tools_project_editor_assembly = nullptr;
|
||||
#endif
|
||||
|
||||
LoadedApiAssembly core_api_assembly;
|
||||
|
|
@ -150,7 +150,7 @@ private:
|
|||
void _init_godot_api_hashes();
|
||||
void _init_exception_policy();
|
||||
|
||||
GDMonoLog *gdmono_log;
|
||||
GDMonoLog *gdmono_log = nullptr;
|
||||
|
||||
#if defined(WINDOWS_ENABLED) && defined(TOOLS_ENABLED)
|
||||
MonoRegInfo mono_reg_info;
|
||||
|
|
@ -250,7 +250,7 @@ public:
|
|||
namespace gdmono {
|
||||
|
||||
class ScopeDomain {
|
||||
MonoDomain *prev_domain;
|
||||
MonoDomain *prev_domain = nullptr;
|
||||
|
||||
public:
|
||||
ScopeDomain(MonoDomain *p_domain) {
|
||||
|
|
@ -270,7 +270,7 @@ public:
|
|||
};
|
||||
|
||||
class ScopeExitDomainUnload {
|
||||
MonoDomain *domain;
|
||||
MonoDomain *domain = nullptr;
|
||||
|
||||
public:
|
||||
ScopeExitDomainUnload(MonoDomain *p_domain) :
|
||||
|
|
|
|||
|
|
@ -68,8 +68,8 @@ class GDMonoAssembly {
|
|||
};
|
||||
|
||||
String name;
|
||||
MonoImage *image;
|
||||
MonoAssembly *assembly;
|
||||
MonoImage *image = nullptr;
|
||||
MonoAssembly *assembly = nullptr;
|
||||
|
||||
bool attrs_fetched = false;
|
||||
MonoCustomAttrInfo *attributes = nullptr;
|
||||
|
|
|
|||
|
|
@ -41,91 +41,91 @@ struct CachedData {
|
|||
// corlib classes
|
||||
|
||||
// Let's use the no-namespace format for these too
|
||||
GDMonoClass *class_MonoObject; // object
|
||||
GDMonoClass *class_bool; // bool
|
||||
GDMonoClass *class_int8_t; // sbyte
|
||||
GDMonoClass *class_int16_t; // short
|
||||
GDMonoClass *class_int32_t; // int
|
||||
GDMonoClass *class_int64_t; // long
|
||||
GDMonoClass *class_uint8_t; // byte
|
||||
GDMonoClass *class_uint16_t; // ushort
|
||||
GDMonoClass *class_uint32_t; // uint
|
||||
GDMonoClass *class_uint64_t; // ulong
|
||||
GDMonoClass *class_float; // float
|
||||
GDMonoClass *class_double; // double
|
||||
GDMonoClass *class_String; // string
|
||||
GDMonoClass *class_IntPtr; // System.IntPtr
|
||||
GDMonoClass *class_MonoObject = nullptr; // object
|
||||
GDMonoClass *class_bool = nullptr; // bool
|
||||
GDMonoClass *class_int8_t = nullptr; // sbyte
|
||||
GDMonoClass *class_int16_t = nullptr; // short
|
||||
GDMonoClass *class_int32_t = nullptr; // int
|
||||
GDMonoClass *class_int64_t = nullptr; // long
|
||||
GDMonoClass *class_uint8_t = nullptr; // byte
|
||||
GDMonoClass *class_uint16_t = nullptr; // ushort
|
||||
GDMonoClass *class_uint32_t = nullptr; // uint
|
||||
GDMonoClass *class_uint64_t = nullptr; // ulong
|
||||
GDMonoClass *class_float = nullptr; // float
|
||||
GDMonoClass *class_double = nullptr; // double
|
||||
GDMonoClass *class_String = nullptr; // string
|
||||
GDMonoClass *class_IntPtr = nullptr; // System.IntPtr
|
||||
|
||||
GDMonoClass *class_System_Collections_IEnumerable;
|
||||
GDMonoClass *class_System_Collections_ICollection;
|
||||
GDMonoClass *class_System_Collections_IDictionary;
|
||||
GDMonoClass *class_System_Collections_IEnumerable = nullptr;
|
||||
GDMonoClass *class_System_Collections_ICollection = nullptr;
|
||||
GDMonoClass *class_System_Collections_IDictionary = nullptr;
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
GDMonoClass *class_System_Diagnostics_StackTrace;
|
||||
GDMonoClass *class_System_Diagnostics_StackTrace = nullptr;
|
||||
GDMonoMethodThunkR<MonoArray *, MonoObject *> methodthunk_System_Diagnostics_StackTrace_GetFrames;
|
||||
GDMonoMethod *method_System_Diagnostics_StackTrace_ctor_bool;
|
||||
GDMonoMethod *method_System_Diagnostics_StackTrace_ctor_Exception_bool;
|
||||
GDMonoMethod *method_System_Diagnostics_StackTrace_ctor_bool = nullptr;
|
||||
GDMonoMethod *method_System_Diagnostics_StackTrace_ctor_Exception_bool = nullptr;
|
||||
#endif
|
||||
|
||||
GDMonoClass *class_KeyNotFoundException;
|
||||
GDMonoClass *class_KeyNotFoundException = nullptr;
|
||||
|
||||
MonoClass *rawclass_Dictionary;
|
||||
MonoClass *rawclass_Dictionary = nullptr;
|
||||
// -----------------------------------------------
|
||||
|
||||
GDMonoClass *class_Vector2;
|
||||
GDMonoClass *class_Vector2i;
|
||||
GDMonoClass *class_Rect2;
|
||||
GDMonoClass *class_Rect2i;
|
||||
GDMonoClass *class_Transform2D;
|
||||
GDMonoClass *class_Vector3;
|
||||
GDMonoClass *class_Vector3i;
|
||||
GDMonoClass *class_Basis;
|
||||
GDMonoClass *class_Quaternion;
|
||||
GDMonoClass *class_Transform3D;
|
||||
GDMonoClass *class_AABB;
|
||||
GDMonoClass *class_Color;
|
||||
GDMonoClass *class_Plane;
|
||||
GDMonoClass *class_StringName;
|
||||
GDMonoClass *class_NodePath;
|
||||
GDMonoClass *class_RID;
|
||||
GDMonoClass *class_GodotObject;
|
||||
GDMonoClass *class_GodotResource;
|
||||
GDMonoClass *class_Node;
|
||||
GDMonoClass *class_Control;
|
||||
GDMonoClass *class_Node3D;
|
||||
GDMonoClass *class_WeakRef;
|
||||
GDMonoClass *class_Callable;
|
||||
GDMonoClass *class_SignalInfo;
|
||||
GDMonoClass *class_Array;
|
||||
GDMonoClass *class_Dictionary;
|
||||
GDMonoClass *class_MarshalUtils;
|
||||
GDMonoClass *class_ISerializationListener;
|
||||
GDMonoClass *class_Vector2 = nullptr;
|
||||
GDMonoClass *class_Vector2i = nullptr;
|
||||
GDMonoClass *class_Rect2 = nullptr;
|
||||
GDMonoClass *class_Rect2i = nullptr;
|
||||
GDMonoClass *class_Transform2D = nullptr;
|
||||
GDMonoClass *class_Vector3 = nullptr;
|
||||
GDMonoClass *class_Vector3i = nullptr;
|
||||
GDMonoClass *class_Basis = nullptr;
|
||||
GDMonoClass *class_Quaternion = nullptr;
|
||||
GDMonoClass *class_Transform3D = nullptr;
|
||||
GDMonoClass *class_AABB = nullptr;
|
||||
GDMonoClass *class_Color = nullptr;
|
||||
GDMonoClass *class_Plane = nullptr;
|
||||
GDMonoClass *class_StringName = nullptr;
|
||||
GDMonoClass *class_NodePath = nullptr;
|
||||
GDMonoClass *class_RID = nullptr;
|
||||
GDMonoClass *class_GodotObject = nullptr;
|
||||
GDMonoClass *class_GodotResource = nullptr;
|
||||
GDMonoClass *class_Node = nullptr;
|
||||
GDMonoClass *class_Control = nullptr;
|
||||
GDMonoClass *class_Node3D = nullptr;
|
||||
GDMonoClass *class_WeakRef = nullptr;
|
||||
GDMonoClass *class_Callable = nullptr;
|
||||
GDMonoClass *class_SignalInfo = nullptr;
|
||||
GDMonoClass *class_Array = nullptr;
|
||||
GDMonoClass *class_Dictionary = nullptr;
|
||||
GDMonoClass *class_MarshalUtils = nullptr;
|
||||
GDMonoClass *class_ISerializationListener = nullptr;
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
GDMonoClass *class_DebuggingUtils;
|
||||
GDMonoClass *class_DebuggingUtils = nullptr;
|
||||
GDMonoMethodThunk<MonoObject *, MonoString **, int *, MonoString **> methodthunk_DebuggingUtils_GetStackFrameInfo;
|
||||
#endif
|
||||
|
||||
GDMonoClass *class_ExportAttribute;
|
||||
GDMonoField *field_ExportAttribute_hint;
|
||||
GDMonoField *field_ExportAttribute_hintString;
|
||||
GDMonoClass *class_SignalAttribute;
|
||||
GDMonoClass *class_ToolAttribute;
|
||||
GDMonoClass *class_AnyPeerAttribute;
|
||||
GDMonoClass *class_AuthorityAttribute;
|
||||
GDMonoClass *class_GodotMethodAttribute;
|
||||
GDMonoField *field_GodotMethodAttribute_methodName;
|
||||
GDMonoClass *class_ScriptPathAttribute;
|
||||
GDMonoField *field_ScriptPathAttribute_path;
|
||||
GDMonoClass *class_AssemblyHasScriptsAttribute;
|
||||
GDMonoField *field_AssemblyHasScriptsAttribute_requiresLookup;
|
||||
GDMonoField *field_AssemblyHasScriptsAttribute_scriptTypes;
|
||||
GDMonoClass *class_ExportAttribute = nullptr;
|
||||
GDMonoField *field_ExportAttribute_hint = nullptr;
|
||||
GDMonoField *field_ExportAttribute_hintString = nullptr;
|
||||
GDMonoClass *class_SignalAttribute = nullptr;
|
||||
GDMonoClass *class_ToolAttribute = nullptr;
|
||||
GDMonoClass *class_AnyPeerAttribute = nullptr;
|
||||
GDMonoClass *class_AuthorityAttribute = nullptr;
|
||||
GDMonoClass *class_GodotMethodAttribute = nullptr;
|
||||
GDMonoField *field_GodotMethodAttribute_methodName = nullptr;
|
||||
GDMonoClass *class_ScriptPathAttribute = nullptr;
|
||||
GDMonoField *field_ScriptPathAttribute_path = nullptr;
|
||||
GDMonoClass *class_AssemblyHasScriptsAttribute = nullptr;
|
||||
GDMonoField *field_AssemblyHasScriptsAttribute_requiresLookup = nullptr;
|
||||
GDMonoField *field_AssemblyHasScriptsAttribute_scriptTypes = nullptr;
|
||||
|
||||
GDMonoField *field_GodotObject_ptr;
|
||||
GDMonoField *field_StringName_ptr;
|
||||
GDMonoField *field_NodePath_ptr;
|
||||
GDMonoField *field_Image_ptr;
|
||||
GDMonoField *field_RID_ptr;
|
||||
GDMonoField *field_GodotObject_ptr = nullptr;
|
||||
GDMonoField *field_StringName_ptr = nullptr;
|
||||
GDMonoField *field_NodePath_ptr = nullptr;
|
||||
GDMonoField *field_Image_ptr = nullptr;
|
||||
GDMonoField *field_RID_ptr = nullptr;
|
||||
|
||||
GDMonoMethodThunk<MonoObject *> methodthunk_GodotObject_Dispose;
|
||||
GDMonoMethodThunkR<Array *, MonoObject *> methodthunk_Array_GetPtr;
|
||||
|
|
|
|||
|
|
@ -70,11 +70,11 @@ class GDMonoClass {
|
|||
StringName namespace_name;
|
||||
StringName class_name;
|
||||
|
||||
MonoClass *mono_class;
|
||||
GDMonoAssembly *assembly;
|
||||
MonoClass *mono_class = nullptr;
|
||||
GDMonoAssembly *assembly = nullptr;
|
||||
|
||||
bool attrs_fetched;
|
||||
MonoCustomAttrInfo *attributes;
|
||||
MonoCustomAttrInfo *attributes = nullptr;
|
||||
|
||||
// This contains both the original method names and remapped method names from the native Godot identifiers to the C# functions.
|
||||
// Most method-related functions refer to this and it's possible this is unintuitive for outside users; this may be a prime location for refactoring or renaming.
|
||||
|
|
|
|||
|
|
@ -36,14 +36,14 @@
|
|||
#include "i_mono_class_member.h"
|
||||
|
||||
class GDMonoField : public IMonoClassMember {
|
||||
GDMonoClass *owner;
|
||||
MonoClassField *mono_field;
|
||||
GDMonoClass *owner = nullptr;
|
||||
MonoClassField *mono_field = nullptr;
|
||||
|
||||
StringName name;
|
||||
ManagedType type;
|
||||
|
||||
bool attrs_fetched;
|
||||
MonoCustomAttrInfo *attributes;
|
||||
MonoCustomAttrInfo *attributes = nullptr;
|
||||
|
||||
public:
|
||||
virtual GDMonoClass *get_enclosing_class() const final { return owner; }
|
||||
|
|
|
|||
|
|
@ -196,14 +196,14 @@ PackedVector3Array mono_array_to_PackedVector3Array(MonoArray *p_array);
|
|||
#pragma pack(push, 1)
|
||||
|
||||
struct M_Callable {
|
||||
MonoObject *target;
|
||||
MonoObject *method_string_name;
|
||||
MonoDelegate *delegate;
|
||||
MonoObject *target = nullptr;
|
||||
MonoObject *method_string_name = nullptr;
|
||||
MonoDelegate *delegate = nullptr;
|
||||
};
|
||||
|
||||
struct M_SignalInfo {
|
||||
MonoObject *owner;
|
||||
MonoObject *name_string_name;
|
||||
MonoObject *owner = nullptr;
|
||||
MonoObject *name_string_name = nullptr;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ class GDMonoMethod : public IMonoClassMember {
|
|||
|
||||
friend class GDMonoClass;
|
||||
|
||||
MonoMethod *mono_method;
|
||||
MonoMethod *mono_method = nullptr;
|
||||
|
||||
public:
|
||||
virtual GDMonoClass *get_enclosing_class() const final;
|
||||
|
|
|
|||
|
|
@ -36,14 +36,14 @@
|
|||
#include "i_mono_class_member.h"
|
||||
|
||||
class GDMonoProperty : public IMonoClassMember {
|
||||
GDMonoClass *owner;
|
||||
MonoProperty *mono_property;
|
||||
GDMonoClass *owner = nullptr;
|
||||
MonoProperty *mono_property = nullptr;
|
||||
|
||||
StringName name;
|
||||
ManagedType type;
|
||||
|
||||
bool attrs_fetched;
|
||||
MonoCustomAttrInfo *attributes;
|
||||
MonoCustomAttrInfo *attributes = nullptr;
|
||||
|
||||
unsigned int param_buffer_size;
|
||||
|
||||
|
|
|
|||
|
|
@ -47,11 +47,11 @@ struct Mono_InterpMethodArguments {
|
|||
size_t ilen;
|
||||
void **iargs;
|
||||
size_t flen;
|
||||
double *fargs;
|
||||
double *fargs = nullptr;
|
||||
void **retval;
|
||||
size_t is_float_ret;
|
||||
//#ifdef TARGET_WASM
|
||||
void *sig;
|
||||
void *sig = nullptr;
|
||||
//#endif
|
||||
};
|
||||
} // extern "C"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue