[Issue 1875] New: &null[x] compiles and runs, giving x
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Wed Feb 27 14:10:51 PST 2008
    
    
  
http://d.puremagic.com/issues/show_bug.cgi?id=1875
           Summary: &null[x] compiles and runs, giving x
           Product: D
           Version: 1.027
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Keywords: accepts-invalid, spec
          Severity: trivial
          Priority: P5
         Component: DMD
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: matti.niemenmaa+dbugzilla at iki.fi
import std.stdio;
void main() {
        writefln(&null[42]);
}
The above prints "002A" - i.e. the hexadecimal representation of 42, the value
used to index null.
This is, I'm fairly certain, unspecified behaviour, but I think you'd be hard
pressed to argue that this makes sense in any way. I'm marking this as
"accepts-invalid" but also as "trivial" since I honestly hope that nobody else
has ever dreamed of doing something like this. :-)
The issue is essentially: why does null[x] return a void type, and why is
taking its address a valid operation? In addition, why is indexing null valid
in the first place? Trying the same with [][x] results in out-of-bounds errors
at compile time.
Note that this works even at runtime, for any value of x.
-- 
    
    
More information about the Digitalmars-d-bugs
mailing list