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