On Friday, 2 March 2012 at 04:53:02 UTC, Jonathan M Davis wrote:
On Friday, March 02, 2012 05:37:46 Nathan M. Swan wrote:
Am I correct that trying to use an Object null results in
undefined behavior?
Object o = null;
o.opCmp(new Object); // segmentation fault on my OSX
machine
This seems a bit non-D-ish to me, as other bugs like this throw
Errors (e.g. RangeError).
It would be nice if it would throw a NullPointerError or
something like that, because I spent a long time trying to
find a
bug that crashed the program before writeln-debugging
statements
could be flushed.
It's defined. The operating system protects you. You get a
segfault on *nix and
an access violation on Windows.
False.
-----------------------
import std.stdio;
class Foo
{
final void bar()
{
writeln("I'm null!");
}
}
void main()
{
Foo foo;
foo.bar();
}
-----------------------
% dmd test.d -O -release -inline
% ./test
I'm null!
%
-----------------------
You only get an error if there is a memory access involved
(vtable, member data etc.)