emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 482049e: Fix 'random' on MS-Windows when integers are wider than


From: Eli Zaretskii
Subject: master 482049e: Fix 'random' on MS-Windows when integers are wider than 30 bits
Date: Sat, 14 Aug 2021 10:40:32 -0400 (EDT)

branch: master
commit 482049e54277f0a429efdcd660286e9e7b465033
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>

    Fix 'random' on MS-Windows when integers are wider than 30 bits
    
    * src/w32.c (random): Provide more random bits for MS-Windows
    builds with EMACS_INT that is wider than 32 bits.  (Bug#32605)
---
 src/w32.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/w32.c b/src/w32.c
index 968b4bb..180c73a 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -2389,8 +2389,13 @@ rand_as183 (void)
 int
 random (void)
 {
-  /* rand_as183 () gives us 15 random bits...hack together 30 bits.  */
+  /* rand_as183 () gives us 15 random bits...hack together 30 bits for
+     Emacs with 32-bit EMACS_INT, and at least 31 bit for wider EMACS_INT.  */
+#if EMACS_INT_MAX > INT_MAX
+  return ((rand_as183 () << 30) | (rand_as183 () << 15) | rand_as183 ());
+#else
   return ((rand_as183 () << 15) | rand_as183 ());
+#endif
 }
 
 void



reply via email to

[Prev in Thread] Current Thread [Next in Thread]