Prechádzať zdrojové kódy

[eval] allow full range of 32bit integers in `Std.random` (fixes #9974)

Aleksandr Kuzmenko 4 rokov pred
rodič
commit
258b0dcf3f

+ 2 - 2
src/macro/eval/evalStdLib.ml

@@ -2175,8 +2175,8 @@ module StdStd = struct
 	)
 
 	let random = vfun1 (fun v ->
-		let v = decode_int v in
-		vint (Random.State.int random (if v <= 0 then 1 else v))
+		let v = decode_i32 v in
+		vint32 (Random.State.int32 random (if v <= Int32.zero then Int32.one else v))
 	);
 end
 

+ 10 - 0
tests/unit/src/unit/issues/Issue9974.hx

@@ -0,0 +1,10 @@
+package unit.issues;
+
+class Issue9974 extends unit.Test {
+#if !neko
+	function test() {
+		var r = Std.random(0x7FFFFFFF);
+		t(r >= 0);
+	}
+#end
+}