Merge pull request #40078 from endlesstravel/fix-print-null-in-array-3

fix crash when pass null in print array in GD.print
This commit is contained in:
Rémi Verschelde 2020-07-03 15:22:25 +02:00 committed by GitHub
commit 488576ade9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 5 deletions

View File

@ -84,7 +84,7 @@ namespace Godot
public static void Print(params object[] what)
{
godot_icall_GD_print(Array.ConvertAll(what, x => x?.ToString()));
godot_icall_GD_print(Array.ConvertAll(what ?? new object[]{"null"}, x => x != null ? x.ToString() : "null"));
}
public static void PrintStack()
@ -94,22 +94,22 @@ namespace Godot
public static void PrintErr(params object[] what)
{
godot_icall_GD_printerr(Array.ConvertAll(what, x => x?.ToString()));
godot_icall_GD_printerr(Array.ConvertAll(what ?? new object[]{"null"}, x => x != null ? x.ToString() : "null"));
}
public static void PrintRaw(params object[] what)
{
godot_icall_GD_printraw(Array.ConvertAll(what, x => x?.ToString()));
godot_icall_GD_printraw(Array.ConvertAll(what ?? new object[]{"null"}, x => x != null ? x.ToString() : "null"));
}
public static void PrintS(params object[] what)
{
godot_icall_GD_prints(Array.ConvertAll(what, x => x?.ToString()));
godot_icall_GD_prints(Array.ConvertAll(what ?? new object[]{"null"}, x => x != null ? x.ToString() : "null"));
}
public static void PrintT(params object[] what)
{
godot_icall_GD_printt(Array.ConvertAll(what, x => x?.ToString()));
godot_icall_GD_printt(Array.ConvertAll(what ?? new object[]{"null"}, x => x != null ? x.ToString() : "null"));
}
public static float Randf()

View File

@ -1035,6 +1035,10 @@ Variant mono_object_to_variant_no_err(MonoObject *p_obj, const ManagedType &p_ty
}
String mono_object_to_variant_string(MonoObject *p_obj, MonoException **r_exc) {
if (p_obj == nullptr) {
return String("null");
}
ManagedType type = ManagedType::from_class(mono_object_get_class(p_obj));
Variant var = GDMonoMarshal::mono_object_to_variant_no_err(p_obj, type);