DIP 1006 - Preliminary Review Round 1

Timon Gehr timon.gehr at gmx.ch
Mon Mar 5 22:57:19 UTC 2018


On 05.03.2018 22:24, ag0aep6g wrote:
> On 03/05/2018 10:11 PM, Walter Bright wrote:
>> On 3/5/2018 11:34 AM, Timon Gehr wrote:
> [...]
>>>       int[] x=[];
>>>       writeln(x[0]); // range violation even with -release
>>>                      // defined behavior even with -boundscheck=off (!)
>>
>> It is not defined behavior with -boundscheck=off.
> 
> Dereferencing null is not defined with -boundscheck=off?

This was my bad. It's not dereferencing null. The compiler is free to 
assume 0<x.length, which means it is allowed to think that the main 
function is dead code.

Anyway, a similar point can be made by considering contracts that say 
that specific values are non-null. They will turn null values into UB 
even though without them, null dereferences would have been defined to 
crash.


More information about the Digitalmars-d mailing list