Browse Source

[cs] nullcheck

Cauê Waneck 11 years ago
parent
commit
55c9417629
1 changed files with 7 additions and 6 deletions
  1. 7 6
      std/cs/internal/Runtime.hx

+ 7 - 6
std/cs/internal/Runtime.hx

@@ -543,16 +543,17 @@ import cs.system.Type;
 		for (i in 0...params.Length)
 		{
 			var param = params[i].ParameterType;
-			var strParam = param + "";
+			var strParam = param + "",
+					arg = oargs[i];
 			if (StringTools.startsWith(strParam, "haxe.lang.Null"))
 			{
-				oargs[i] = mkNullable(oargs[i], param);
-			} else if (cast(untyped __typeof__(IConvertible), Type).IsAssignableFrom(param) && !cs.Lib.nativeType(oargs[i]).IsAssignableFrom(param)) {
-				if (oargs[i] == null) {
+				oargs[i] = mkNullable(arg, param);
+			} else if (cast(untyped __typeof__(IConvertible), Type).IsAssignableFrom(param)) {
+				if (arg == null) {
 					if (param.IsValueType)
 						oargs[i] = Activator.CreateInstance(param);
-				} else {
-					oargs[i] = cast(oargs[i], IConvertible).ToType(param, null);
+				} else if (!cs.Lib.nativeType(arg).IsAssignableFrom(param)) {
+					oargs[i] = cast(arg, IConvertible).ToType(param, null);
 				}
 			}
 		}