Lints, Condate and bugs

Walter Bright newshound2 at digitalmars.com
Thu Oct 28 10:40:49 PDT 2010


Don wrote:
> With the bugs I've fixed in the DMD source, I've seen very many cases of 
> 7, several cases of 2 and 6, and only one case of 8.
> Many bugs are also caused by dangerous casts (where a pointer is cast 
> from one type to another).
> But almost everything else been caused by a logic error.
> 
> I am certain that there are still many null pointer bugs in DMD.

None of the null pointer bugs dmd has had would have been prevented by using 
non-nullable types. I.e. they were not "I forgot to initialize this pointer", 
but were instead the result of logic errors, like running off the end of a list.

NULL in dmd represents "this datum has not been computed yet" or "this datum has 
an invalid value" or "this datum does not exist". With non-nullable types, 
they'd have to be set to a datum that asserts whenever it is accessed, leading 
to the same behavior.

Having the program abort due to an assert failure rather than a segment 
violation is not the great advance it's sold as. I think one should carefully 
consider whether a particular null pointer problem is a symptom of a logic bug 
or not before claiming that eliminating null pointers will magically resolve it.

Otherwise, you're just shooting the messenger.


More information about the Digitalmars-d mailing list