<URL: http://bugs.freeciv.org/Ticket/Display.html?id=40098 >

In PR#40073, I moved the code from client/tilespec.c into utility/rand.c,
but now it seems to assert() on larger maps.  Changed the assert() to allow
larger values.  And use standard header definitions!

Index: utility/rand.c
===================================================================
--- utility/rand.c      (revision 14405)
+++ utility/rand.c      (working copy)
@@ -265,7 +265,7 @@
 #define SMALL_PRIME (1009)
 
   /* Check for overflow and underflow */
-  assert((int)(seed * LARGE_PRIME) > 0);
+  assert(seed < MAX_UINT32 / LARGE_PRIME);
   assert(size < SMALL_PRIME);
   assert(size > 0);
   result = ((seed * LARGE_PRIME) % SMALL_PRIME) % size;
Index: utility/rand.h
===================================================================
--- utility/rand.h      (revision 14405)
+++ utility/rand.h      (working copy)
@@ -13,12 +13,14 @@
 #ifndef FC__RAND_H
 #define FC__RAND_H
 
+#include <stdint.h>
+
 #include "shared.h"            /* bool type */
 
 /* This is duplicated in shared.h to avoid extra includes: */
 #define MAX_UINT32 0xFFFFFFFF
 
-typedef unsigned int RANDOM_TYPE;
+typedef uint32_t RANDOM_TYPE;
 
 typedef struct {
   RANDOM_TYPE v[56];
_______________________________________________
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to