git: df11fb9bf042 - main - divmoddi4: Handle negative remainders.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 01 Jul 2023 21:44:04 UTC
The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=df11fb9bf0421ad11cfbc8834ca393a1a0c2748d commit df11fb9bf0421ad11cfbc8834ca393a1a0c2748d Author: John Baldwin <jhb@FreeBSD.org> AuthorDate: 2023-07-01 21:43:41 +0000 Commit: John Baldwin <jhb@FreeBSD.org> CommitDate: 2023-07-01 21:43:41 +0000 divmoddi4: Handle negative remainders. The sign of the remainder matches the sign of the numerator in C. Reported by: jrtc27 Reviewed by: jrtc27 Differential Revision: https://reviews.freebsd.org/D40832 --- sys/libkern/divmoddi4.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sys/libkern/divmoddi4.c b/sys/libkern/divmoddi4.c index e5bd81a90ad7..7c0a6a690f24 100644 --- a/sys/libkern/divmoddi4.c +++ b/sys/libkern/divmoddi4.c @@ -43,18 +43,18 @@ quad_t __divmoddi4(quad_t a, quad_t b, quad_t *rem) { u_quad_t ua, ub, uq, urem; - int neg; + int negq, negr; if (a < 0) - ua = -(u_quad_t)a, neg = 1; + ua = -(u_quad_t)a, negq = 1, negr = 1; else - ua = a, neg = 0; + ua = a, negq = 0, negr = 0; if (b < 0) - ub = -(u_quad_t)b, neg ^= 1; + ub = -(u_quad_t)b, negq ^= 1; else ub = b; uq = __qdivrem(ua, ub, &urem); if (rem != 0) - *rem = urem; - return (neg ? -uq : uq); + *rem = negr ? -urem : urem; + return (negq ? -uq : uq); }