On 11/8/2011 7:05 PM, Timon Gehr wrote:
On 11/08/2011 11:35 PM, Alex Rønne Petersen wrote:
Hi,

As the title suggests, I'm going to be rather blunt about this.
assert(obj) testing the invariant *without* doing a null check is insane
for the following reasons:

1) It is not what a user expects. It is *unintuitive*.
2) assert(!obj) does an is-null check. assert(obj) is a completely
broken opposite of this.
3) No AssertError is thrown, which is the entire point of the built-in
assert().
4) The few added instructions for the null check hardly matter in a
*debug* build of all things.

I don't mind assert(obj) testing the invariant of obj. In fact, that
very much makes sense. But please, please, *please* check the object for
null first.

+1.

+1. **AND** in debug mode all pointers should be checked for null. Conceptually, I fail to see how a null pointer dereference is different from an array bounds error. A null pointer is effectively an array with length zero.

Reply via email to