[Issue 7732] New: CTFE bug causes if(ptr !is null) to pass when ptr==null
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Mar 19 07:55:38 PDT 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7732
Summary: CTFE bug causes if(ptr !is null) to pass when
ptr==null
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: critical
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: hsteoh at quickfur.ath.cx
--- Comment #0 from hsteoh at quickfur.ath.cx 2012-03-19 07:55:54 PDT ---
Something is BADLY broken with CTFE:
struct AssociativeArray
{
int *impl;
int f()
{
if (impl !is null)
auto x = *impl; // this is line 7
return 1;
}
}
void main() {
int test()
{
AssociativeArray aa;
return aa.f;
}
enum str = test();
}
This is not a fully minimized test case, but I've tried my best to reduce it as
much as possible. With the latest dmd from git, this gives:
test.d(7): Error: dereference of invalid pointer 'AssociativeArray(null)'
test.d(15): called from here: aa.f()
test.d(17): called from here: test()
This is a VERY serious bug because apparently the condition (impl !is null)
actually passes, even though impl is null!
This appears to be related to the current AssociativeArray magic (renaming the
struct in the above code makes the bug go away).
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list