[m-rev.] for review: avoid undefined behaviour of int.abs.
Julien Fischer
jfischer at opturion.com
Mon Jan 15 10:59:12 AEDT 2018
On Mon, 15 Jan 2018, Peter Wang wrote:
> On Sun, 14 Jan 2018 11:56:35 -0500 (EST), Julien Fischer <jfischer at opturion.com> wrote:
>>
>> For review by anyone.
>>
>> The following is what was discussed back in Oct. 2016, except that I
>> haven't added a new exception type specific for overflows (yet).
>>
>> I will do something similar for ther other signed integer types once
>> this is reviewed adn committed.
>>
>> -----------------------
>>
>> Avoid undefined behaviour of int.abs.
>>
>> library.m:
>> Make int.abs throw an exception for int.min_int.
>>
>> Add the new function unchecked_abs/1, whose behaviour is
>> undefined for int.min_int.
>>
>> Add the new function nabs/1 which computes the negative
>> absolute value of an int Unlike abs, this is defined for
>> all ints.
>
> Full stop.
Fixed.
>> diff --git a/library/int.m b/library/int.m
>> index 4dad325..e0b7cd6 100644
>> --- a/library/int.m
>> +++ b/library/int.m
>> @@ -1,7 +1,8 @@
>> %---------------------------------------------------------------------------%
>> % vim: ft=mercury ts=4 sw=4 et
>> %---------------------------------------------------------------------------%
>> -% Copyright (C) 1994-2011 The University of Melbourne.
>> +% Copyright (C) 1994-2012 The University of Melbourne.
>> +% Copyright (C) 2013-2018 The Mercury team.
>> % This file may only be copied under the terms of the GNU Library General
>> % Public License - see the file COPYING.LIB in the Mercury distribution.
>> %---------------------------------------------------------------------------%
>> @@ -52,11 +53,24 @@
>>
>> %---------------------------------------------------------------------------%
>>
>> - % Absolute value.
>> + % abs(X) returns the absolute value of X.
>> + % Throws an exception if X = int.min_int.
>> %
>> :- func abs(int) = int.
>> :- pred abs(int::in, int::out) is det.
>>
>> + % unchecked(X) returns the absolute value of X, except that the result is
>
> unchecked_abs
Fixed.
Julien.
More information about the reviews
mailing list