Acces Violation: assert with null instance

Stewart Gordon smjg_1998 at yahoo.com
Wed Jan 10 18:50:47 PST 2007


Frits van Bommel wrote:
> Stewart Gordon wrote:
>> For some strange reason, assert on an object reference checks that the 
>> invariants are satisfied instead of that the reference isn't null. 
>> There's nothing to this effect in the spec, so I don't know how it 
>> came about.  While it may be useful, it certainly shouldn't do it 
>> _instead of_ checking it isn't null.
> 
> As I commented recently when this bug was added to bugzilla, it's in the 
> spec. It's just not where you'd expect it.

What is the Bugzilla issue number?  I can't seem to find it.

> It's noted at http://www.digitalmars.com/d/class.html#invariants (the 
> section on class invariants) instead of in the section on asserts.
> I've since added a warning about this on the comments page for the page 
> containing the section on asserts.
> 
> Also, the null check *is* in the code, but when Phobos is compiled in 
> release mode (which the pre-compiled version is) the assert isn't 
> performed...

"The invariant can be checked when a class object is the argument to an 
assert() expression, as:"

I see this as giving an _additional_ use of assert, something that 
assert on a class object may do as an extra.  The general contract of 
assert is supposed to remain, and the fact that out of the box it 
doesn't certainly constitutes a bug, at least IMO.

Stewart.


More information about the Digitalmars-d-bugs mailing list