diff --git a/src/system/libroot/posix/stdlib/div.c b/src/system/libroot/posix/stdlib/div.c index 723a31515e..0ca8e3326f 100644 --- a/src/system/libroot/posix/stdlib/div.c +++ b/src/system/libroot/posix/stdlib/div.c @@ -1,9 +1,10 @@ /* - * Copyright 2002-2007, Haiku Inc. All rights reserved. + * Copyright 2002-2010, Haiku Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Author: * Daniel Reinhold, danielre@users.sf.net + * Tri-Edge AI, triedgeai@gmail.com */ @@ -16,9 +17,9 @@ div(int numerator, int denominator) div_t val; val.quot = numerator / denominator; - val.rem = numerator - denominator * val.quot; + val.rem = numerator % denominator; - if (val.rem > 0 && val.quot < 0) { + if (numerator >= 0 && val.rem < 0) { val.rem -= denominator; ++val.quot; } @@ -33,9 +34,9 @@ ldiv(long numerator, long denominator) ldiv_t val; val.quot = numerator / denominator; - val.rem = numerator - denominator * val.quot; + val.rem = numerator % denominator; - if (val.rem > 0 && val.quot < 0) { + if (numerator >= 0 && val.rem < 0) { val.rem -= denominator; ++val.quot; } @@ -50,9 +51,9 @@ lldiv(long long numerator, long long denominator) lldiv_t val; val.quot = numerator / denominator; - val.rem = numerator - denominator * val.quot; + val.rem = numerator % denominator; - if (val.rem > 0 && val.quot < 0) { + if (numerator >= 0 && val.rem < 0) { val.rem -= denominator; ++val.quot; }