Parcourir la source

[cs] add null check in Runtime.slowSetField (closes #5481)

Dan Korostelev il y a 9 ans
Parent
commit
8872b4402a
2 fichiers modifiés avec 16 ajouts et 1 suppressions
  1. 1 1
      std/cs/internal/Runtime.hx
  2. 15 0
      tests/unit/src/unit/issues/Issue5481.hx

+ 1 - 1
std/cs/internal/Runtime.hx

@@ -385,7 +385,7 @@ import cs.system.Object;
 			{
 				value = mkNullable(value, f.FieldType);
 			}
-			if (Object.ReferenceEquals(Lib.toNativeType(cs.system.Double), Lib.getNativeType(value)) && !Object.ReferenceEquals(t, f.FieldType))
+			if (value != null && Object.ReferenceEquals(Lib.toNativeType(cs.system.Double), Lib.getNativeType(value)) && !Object.ReferenceEquals(t, f.FieldType))
 			{
 				var ic = Lib.as(value, IConvertible);
 				value = ic.ToType(f.FieldType, null);

+ 15 - 0
tests/unit/src/unit/issues/Issue5481.hx

@@ -0,0 +1,15 @@
+package unit.issues;
+
+@:nativeGen
+private class Some {
+	public var s:String;
+	public function new() s = "hello";
+}
+
+class Issue5481 extends Test {
+	function test() {
+		var o = new Some();
+		Reflect.setField(o, "s", null);
+		eq(o.s, null);
+	}
+}