diff --git a/lib/libc/stdlib/_rand48.c b/lib/libc/stdlib/_rand48.c index 0468026dcd8c..05acde682a67 100644 --- a/lib/libc/stdlib/_rand48.c +++ b/lib/libc/stdlib/_rand48.c @@ -42,15 +42,17 @@ __dorand48(unsigned short xseed[3]) _DIAGASSERT(xseed != NULL); - accu = (unsigned long) __rand48_mult[0] * (unsigned long) xseed[0] + - (unsigned long) __rand48_add; + accu = (unsigned long) __rand48_mult[0] * (unsigned long) xseed[0]; + accu += (unsigned long) __rand48_add; temp[0] = (unsigned short) accu; /* lower 16 bits */ accu >>= sizeof(unsigned short) * 8; - accu += (unsigned long) __rand48_mult[0] * (unsigned long) xseed[1] + - (unsigned long) __rand48_mult[1] * (unsigned long) xseed[0]; + accu += (unsigned long) __rand48_mult[0] * (unsigned long) xseed[1]; + accu += (unsigned long) __rand48_mult[1] * (unsigned long) xseed[0]; temp[1] = (unsigned short) accu; /* middle 16 bits */ accu >>= sizeof(unsigned short) * 8; - accu += __rand48_mult[0] * xseed[2] + __rand48_mult[1] * xseed[1] + __rand48_mult[2] * xseed[0]; + accu += (unsigned long) __rand48_mult[0] * (unsigned long) xseed[2]; + accu += (unsigned long) __rand48_mult[1] * (unsigned long) xseed[1]; + accu += (unsigned long) __rand48_mult[2] * (unsigned long) xseed[0]; xseed[0] = temp[0]; xseed[1] = temp[1]; xseed[2] = (unsigned short) accu;