digitalmars.D - Passing stack allocated string to `assert`
- Jacob Carlborg (10/10) Dec 17 2019 This code compiles with DMD 2.089.0 with the `-dip1000` flag:
- Petar Kirov [ZombineDev] (4/14) Dec 17 2019 Yes, depending on which druntime function the assert is lowered
- Petar Kirov [ZombineDev] (6/23) Dec 17 2019 But if it's not lowered to a template, but to an extern(C)
- Walter Bright (2/12) Dec 18 2019 Please add to bugzilla.
- Jacob Carlborg (4/5) Dec 21 2019 Done: https://issues.dlang.org/show_bug.cgi?id=20461.
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
Dec 17 2019
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 CarlborgYes, depending on which druntime function the assert is lowered to.
Dec 17 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: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.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 CarlborgYes, depending on which druntime function the assert is lowered to.
Dec 17 2019
On 12/17/2019 12:47 AM, 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?Please add to bugzilla.
Dec 18 2019
On 2019-12-18 23:25, Walter Bright wrote:Please add to bugzilla.Done: https://issues.dlang.org/show_bug.cgi?id=20461. -- /Jacob Carlborg
Dec 21 2019