فهرست منبع

[lua] fix Std.parseInt() for haxedecimal with leading whitespaces
#8970

Aleksandr Kuzmenko 5 سال پیش
والد
کامیت
551565c16d
1فایلهای تغییر یافته به همراه7 افزوده شده و 2 حذف شده
  1. 7 2
      std/lua/_std/Std.hx

+ 7 - 2
std/lua/_std/Std.hx

@@ -53,9 +53,14 @@ import lua.NativeStringTools;
 	public static function parseInt(x:String):Null<Int> {
 		if (x == null)
 			return null;
-		var hexMatch = NativeStringTools.match(x, "^ *[%-+]*0[xX][%da-fA-F]*");
+		var hexMatch = NativeStringTools.match(x, "^[ \t\r\n]*([%-+]*0[xX][%da-fA-F]*)");
 		if (hexMatch != null) {
-			return lua.Lua.tonumber(hexMatch.substr(2), 16);
+			var sign = switch StringTools.fastCodeAt(hexMatch, 0) {
+				case '-'.code: -1;
+				case '+'.code: 1;
+				case _: 0;
+			}
+			return (sign == -1 ? -1 : 1) * lua.Lua.tonumber(hexMatch.substr(sign == 0 ? 2 : 3), 16);
 		} else {
 			var intMatch = NativeStringTools.match(x, "^ *[%-+]?%d*");
 			if (intMatch != null) {