Passing stack allocated string to `assert`

Petar Petar
Tue Dec 17 09:23:06 UTC 2019


On Tuesday, 17 December 2019 at 09:21:42 UTC, Petar Kirov 
[ZombineDev] wrote:
> On Tuesday, 17 December 2019 at 08:47:49 UTC, Jacob Carlborg 
> wrote:
>> This code compiles with DMD 2.089.0 with the `-dip1000` flag:
>>
>> void main() @safe
>> {
>>     char[10] buffer = "0123456789";
>>     assert(false, buffer[]);
>> }
>>
>> Running this code will obviously assert, but the assert 
>> message contains garbage. Should DIP1000 be able to catch this?
>>
>> --
>> /Jacob Carlborg
>
> Yes, depending on which druntime function the assert is lowered 
> to.

But if it's not lowered to a template, but to an extern(C) 
funcion, like most of the old runtime functions, it's not 
surprising that it didn't check it thoroughly. We really need to 
phase out those runtime functions from druntime.


More information about the Digitalmars-d mailing list