=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/jot/jot.c,v retrieving revision 1.27 retrieving revision 1.28 diff -c -r1.27 -r1.28 *** src/usr.bin/jot/jot.c 2016/01/10 01:15:52 1.27 --- src/usr.bin/jot/jot.c 2016/07/17 04:04:46 1.28 *************** *** 1,4 **** ! /* $OpenBSD: jot.c,v 1.27 2016/01/10 01:15:52 tb Exp $ */ /* $NetBSD: jot.c,v 1.3 1994/12/02 20:29:43 pk Exp $ */ /*- --- 1,4 ---- ! /* $OpenBSD: jot.c,v 1.28 2016/07/17 04:04:46 tb Exp $ */ /* $NetBSD: jot.c,v 1.3 1994/12/02 20:29:43 pk Exp $ */ /*- *************** *** 277,285 **** if (prec > 9) /* pow(10, prec) > UINT32_MAX */ errx(1, "requested precision too large"); - while (prec-- > 0) - pow10 *= 10; - if (ender < begin) { x = begin; begin = ender; --- 277,282 ---- *************** *** 287,302 **** } x = ender - begin; ! /* ! * If pow10 * (ender - begin) is an integer, use ! * arc4random_uniform(). ! */ ! use_unif = fmod(pow10 * (ender - begin), 1) == 0; ! if (use_unif) { ! uintx = pow10 * (ender - begin); ! if (uintx >= UINT32_MAX) ! errx(1, "requested range too large"); ! uintx++; } for (i = 1; i <= reps || infinity; i++) { --- 284,305 ---- } x = ender - begin; ! if (prec == 0 && (fmod(ender, 1) != 0 || fmod(begin, 1) != 0)) ! use_unif = 0; ! else { ! while (prec-- > 0) ! pow10 *= 10; ! /* ! * If pow10 * (ender - begin) is an integer, use ! * arc4random_uniform(). ! */ ! use_unif = fmod(pow10 * (ender - begin), 1) == 0; ! if (use_unif) { ! uintx = pow10 * (ender - begin); ! if (uintx >= UINT32_MAX) ! errx(1, "requested range too large"); ! uintx++; ! } } for (i = 1; i <= reps || infinity; i++) {