fix crash when pass null in print array in GD.print

fix crash when pass null in print array in GD.print 2

fix crash when pass null in print array in GD.print 3

fix space

(cherry picked from commit d2461bad63)
This commit is contained in:
endlesstravel 2020-07-03 09:52:40 +08:00 committed by Rémi Verschelde
parent c29da0e2fe
commit 13d4813ddf
2 changed files with 9 additions and 5 deletions

View File

@ -83,7 +83,7 @@ namespace Godot
public static void Print(params object[] what) 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() public static void PrintStack()
@ -93,22 +93,22 @@ namespace Godot
public static void PrintErr(params object[] what) 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) 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) 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) 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() public static float Randf()

View File

@ -914,6 +914,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) { 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)); ManagedType type = ManagedType::from_class(mono_object_get_class(p_obj));
Variant var = GDMonoMarshal::mono_object_to_variant_no_err(p_obj, type); Variant var = GDMonoMarshal::mono_object_to_variant_no_err(p_obj, type);