mirror of
https://github.com/postgres/postgres.git
synced 2025-11-03 09:13:20 +03:00
Guard against division by zero in test_int128 module.
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 <dean.a.rasheed@gmail.com> Reported-by: Andres Freund <andres@anarazel.de> Discussion: https://postgr.es/m/da4wqngd6gwz5s4yf5y5f75xj7gpja62l4dbp6w4j3vs7fcjue@upvolcu4e6o2
This commit is contained in:
@@ -90,17 +90,21 @@ main(int argc, char **argv)
|
|||||||
|
|
||||||
while (count-- > 0)
|
while (count-- > 0)
|
||||||
{
|
{
|
||||||
int64 x = pg_prng_uint64(&pg_global_prng_state);
|
int64 x = pg_prng_int64(&pg_global_prng_state);
|
||||||
int64 y = pg_prng_uint64(&pg_global_prng_state);
|
int64 y = pg_prng_int64(&pg_global_prng_state);
|
||||||
int64 z = pg_prng_uint64(&pg_global_prng_state);
|
int64 z = pg_prng_int64(&pg_global_prng_state);
|
||||||
int64 w = pg_prng_uint64(&pg_global_prng_state);
|
int64 w = pg_prng_int64(&pg_global_prng_state);
|
||||||
int32 z32 = (int32) z;
|
int32 z32 = pg_prng_int32(&pg_global_prng_state);
|
||||||
test128 t1;
|
test128 t1;
|
||||||
test128 t2;
|
test128 t2;
|
||||||
test128 t3;
|
test128 t3;
|
||||||
int32 r1;
|
int32 r1;
|
||||||
int32 r2;
|
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 */
|
/* check unsigned addition */
|
||||||
t1.hl.hi = x;
|
t1.hl.hi = x;
|
||||||
t1.hl.lo = y;
|
t1.hl.lo = y;
|
||||||
|
|||||||
Reference in New Issue
Block a user