Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
August 20, 2013 [Issue 10858] New: [CTFE] null pointer assert error | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=10858 Summary: [CTFE] null pointer assert error Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: monarchdodra@gmail.com --- Comment #0 from monarchdodra@gmail.com 2013-08-20 03:45:53 PDT --- Apparently, CTFE cannot interpret "new int*" at compile time. However, it can (!?) interpret new int*[](1)? However, depending on the context, it may actually no correctly evaluate it: //---- auto foo1(T)() { return new T; } auto foo2(T)() { return new T[](1); } void main() { //foo1 tests. version (none) { bool dg1() { auto a = foo1!(int*)(); //Fails here. assert(a == null); return true; } enum a = foo1!(int*)(); //Fails static assert(dg1()); //Also fails. } //foo2 tests { bool dg2() { auto a = foo2!(int*)(); //OK? assert(a[0] == null); //Fails here ??? return true; } enum a = foo2!(int*)(); //OK static assert(a[0] == null); //OK static assert(dg2()); //FAILS. } } //---- In this example (the "foo2" tests), we can see that "enum a = foo2!(int*)()" is perfectly evaluated. The "static assert" afterwards proves it. However, if these two instructions are instead evaluated with CTFE "static assert(dg2())", then "something" will fail... -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
September 06, 2013 [Issue 10858] CTFE wrong code for comparison of array of pointers | ||||
---|---|---|---|---|
| ||||
Posted in reply to monarchdodra@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=10858 Don <clugdbug@yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[CTFE] null pointer assert |CTFE wrong code for |error |comparison of array of | |pointers --- Comment #1 from Don <clugdbug@yahoo.com.au> 2013-09-05 23:24:28 PDT --- This is a horrible wrong-code bug, nothing to do with 'new'. The bug is in ==. The pointer doesn't need to be null. Reduced test case: bool bug10858() { int *[4] x; x[0] = null; assert(x[0] == null); return true; } static assert(bug10858()); -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
September 10, 2013 [Issue 10858] CTFE wrong code for comparison of array of pointers | ||||
---|---|---|---|---|
| ||||
Posted in reply to monarchdodra@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=10858 --- Comment #2 from github-bugzilla@puremagic.com 2013-09-09 23:46:40 PDT --- Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/77e471b8355c433cbfa5cd3a8264a4740bafdaa2 Fix issue 10858 CTFE wrong array of pointers Pointer comparison should be based on rvalues, not lvalues. That bug was also hiding three latent wrong-code bugs. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
September 13, 2013 [Issue 10858] CTFE wrong code for comparison of array of pointers | ||||
---|---|---|---|---|
| ||||
Posted in reply to monarchdodra@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=10858 --- Comment #3 from github-bugzilla@puremagic.com 2013-09-13 10:46:08 PDT --- Commit pushed to dmd-1.x at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/9544863a6491feeaa9c6c0ee8094b0c49ba385f7 Fix issue 10858 CTFE wrong array of pointers Pointer comparison should be based on rvalues, not lvalues. That bug was also hiding two latent wrong-code bugs. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
September 13, 2013 [Issue 10858] CTFE wrong code for comparison of array of pointers | ||||
---|---|---|---|---|
| ||||
Posted in reply to monarchdodra@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=10858 Walter Bright <bugzilla@digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla@digitalmars.com Version|D2 |D1 & D2 Resolution| |FIXED -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation