When testing 128/32-bit division in the test_int128 test module, make
sure that we don't attempt to divide by zero.
While at it, use pg_prng_int64() and pg_prng_int32() to generate the
random numbers required for the tests, rather than pg_prng_uint64().
This eliminates the need for any implicit or explicit type casts.
Author: Dean Rasheed <
[email protected]>
Reported-by: Andres Freund <[email protected]>
Discussion: https://postgr.es/m/da4wqngd6gwz5s4yf5y5f75xj7gpja62l4dbp6w4j3vs7fcjue@upvolcu4e6o2
while (count-- > 0)
{
- int64 x = pg_prng_uint64(&pg_global_prng_state);
- int64 y = pg_prng_uint64(&pg_global_prng_state);
- int64 z = pg_prng_uint64(&pg_global_prng_state);
- int64 w = pg_prng_uint64(&pg_global_prng_state);
- int32 z32 = (int32) z;
+ int64 x = pg_prng_int64(&pg_global_prng_state);
+ int64 y = pg_prng_int64(&pg_global_prng_state);
+ int64 z = pg_prng_int64(&pg_global_prng_state);
+ int64 w = pg_prng_int64(&pg_global_prng_state);
+ int32 z32 = pg_prng_int32(&pg_global_prng_state);
test128 t1;
test128 t2;
test128 t3;
int32 r1;
int32 r2;
+ /* prevent division by zero in the 128/32-bit division test */
+ while (z32 == 0)
+ z32 = pg_prng_int32(&pg_global_prng_state);
+
/* check unsigned addition */
t1.hl.hi = x;
t1.hl.lo = y;