Browse Source

[jvm] throw NPE if we dynamic-read on null

see #8452
Simon Krajewski 5 years ago
parent
commit
bd47aa380f
2 changed files with 8 additions and 1 deletions
  1. 5 1
      std/jvm/Jvm.hx
  2. 3 0
      std/jvm/_std/Reflect.hx

+ 5 - 1
std/jvm/Jvm.hx

@@ -29,6 +29,7 @@ import haxe.ds.Vector;
 import haxe.extern.Rest;
 import haxe.extern.Rest;
 import java.Init;
 import java.Init;
 import java.NativeArray;
 import java.NativeArray;
+import java.lang.NullPointerException;
 import jvm.DynamicObject;
 import jvm.DynamicObject;
 import jvm.EmptyConstructor;
 import jvm.EmptyConstructor;
 import jvm.Object;
 import jvm.Object;
@@ -329,7 +330,10 @@ class Jvm {
 	}
 	}
 
 
 	static public function readField(obj:Dynamic, name:String):Dynamic {
 	static public function readField(obj:Dynamic, name:String):Dynamic {
-		if (obj == null || name == null) {
+		if (obj == null) {
+			throw new NullPointerException(name);
+		}
+		if (name == null) {
 			return null;
 			return null;
 		}
 		}
 		if (instanceof(obj, jvm.Object)) {
 		if (instanceof(obj, jvm.Object)) {

+ 3 - 0
std/jvm/_std/Reflect.hx

@@ -38,6 +38,9 @@ class Reflect {
 	}
 	}
 
 
 	public static function field(o:Dynamic, field:String):Dynamic {
 	public static function field(o:Dynamic, field:String):Dynamic {
+		if (o == null) {
+			return null;
+		}
 		return Jvm.readField(o, field);
 		return Jvm.readField(o, field);
 	}
 	}