A strange div bug on Linux x86_64, (both dmd & ldc2): long -5000 / size_t 2 = 9223372036854773308

mw mingwu at gmail.com
Thu Aug 13 22:27:03 UTC 2020

On Thursday, 13 August 2020 at 21:33:11 UTC, Walter Bright wrote:

> To check for overflows, etc., use core.checkedint:
> https://dlang.org/phobos/core_checkedint.html
> If you're willing to accept some performance reduction, 
> std.experimental.checkedint provides integral types that 
> protect against all kinds of integer arithmetic issues, 
> including "unexpected change of sign":
> https://dlang.org/phobos/std_experimental_checkedint.html

So instead of let user change their existing code *manually* all 
over the place, e.g.

     auto r = new int[a.length + b.length];


     auto r = new int[(checked(a.length) + b.length).get];

For users / applications that do value correctness more than 
performance, can we have a compiler switch which turn all the 
types & operations (e.g. in modules, that users also specified on 
command-line) into core_checkedint or std_experimental_checkedint 

More information about the Digitalmars-d mailing list