summaryrefslogtreecommitdiff
path: root/modules/mono/mono_gd/gd_mono_marshal.cpp
diff options
context:
space:
mode:
authorIgnacio Etcheverry <ignalfonsore@gmail.com>2019-12-19 16:36:49 +0100
committerIgnacio Etcheverry <ignalfonsore@gmail.com>2019-12-19 16:51:32 +0100
commit98dc07f25fbbea480c99d34472872943b1902ba8 (patch)
tree0c14fe531d2f91b4680e384c78845983a7872701 /modules/mono/mono_gd/gd_mono_marshal.cpp
parent981c6aa102ba50d314a023a96d7affb7081334e5 (diff)
Mono/C#: Fix Variant -> MonoString* when type is Variant:NIL
`Variant::operator String()` returns "Null" if the type is `Variant:NIL`. We must consider that and return a null `MonoString*` instead when marshalling. This was also causing a "Null" error to be displayed when exporting a game because null string members would be set to "Null" during hot-reload.
Diffstat (limited to 'modules/mono/mono_gd/gd_mono_marshal.cpp')
-rw-r--r--modules/mono/mono_gd/gd_mono_marshal.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/modules/mono/mono_gd/gd_mono_marshal.cpp b/modules/mono/mono_gd/gd_mono_marshal.cpp
index f74fe5715c..9f55b31edc 100644
--- a/modules/mono/mono_gd/gd_mono_marshal.cpp
+++ b/modules/mono/mono_gd/gd_mono_marshal.cpp
@@ -374,6 +374,8 @@ MonoObject *variant_to_mono_object(const Variant *p_var, const ManagedType &p_ty
}
case MONO_TYPE_STRING: {
+ if (p_var->get_type() == Variant::NIL)
+ return NULL; // Otherwise, Variant -> String would return the string "Null"
return (MonoObject *)mono_string_from_godot(p_var->operator String());
} break;