# HG changeset patch # User John W. Eaton # Date 1292829544 18000 # Node ID 57868a21170e8875e6d9a5b800214d7f6153f3d9 # Parent 7b563cf94d8d004a8efad4785c843c4040c75743 lo-mappers.h (xrem, xmod): prevent use of extra precision diff --git a/liboctave/ChangeLog b/liboctave/ChangeLog --- a/liboctave/ChangeLog +++ b/liboctave/ChangeLog @@ -1,3 +1,8 @@ +2010-12-20 John W. Eaton + + * lo-mappers.h (xrem, xmod): Declare temporary result from + multiplication volatile. + 2010-12-15 John W. Eaton Bug #31883. diff --git a/liboctave/lo-mappers.h b/liboctave/lo-mappers.h --- a/liboctave/lo-mappers.h +++ b/liboctave/lo-mappers.h @@ -341,7 +341,10 @@ } } - retval = x - y * n; + // Prevent use of extra precision. + volatile T tmp = y * n; + + retval = x - tmp; } if (x != y && y != 0 && retval != 0) @@ -386,7 +389,10 @@ } } - retval = x - y * n; + // Prevent use of extra precision. + volatile T tmp = y * n; + + retval = x - tmp; } if (x != y && y != 0 && retval != 0)