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
This commit is contained in:
endlesstravel 2020-07-03 09:52:40 +08:00
parent 67e4082b1e
commit d2461bad63
2 changed files with 9 additions and 5 deletions

View File

@ -84,7 +84,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()
@ -94,22 +94,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

@ -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) { 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);