Bob Proulx wrote:
> > Compiling GNU gettext with a C++ compiler revealed a bug: an assignment
> > between an 'int' variable and an 'enum' variable that was not intended.
>
> Although I am sure it was not intended, what bad consequences would
> have resulted from the enum and int mixup?
msgfmt, on a PO file containing messages extracted from an awk program, could
have reported unwarranted errors.
> I have been seeing lots and lots of casts being added to the code. I
> think that is much more dangerous than a potential enum issue.
Can you explain what you find dangerous about a cast?
Before these patches, you could write
int *array = xmalloc (new_size * sizeof (short)),
and the C compiler would accept it without complaints.
You could also write
int *array = (int *) xmalloc (new_size * sizeof (short)),
and both the C and C++ compiler would accept it without complaints.
Furthermore, either way, there was no check against arithmetic overflow
in the multiplication.
Now you are encouraged to write
int *array = XNMALLOC (new_size, short),
and both the C and C++ compiler will shout at you. Plus, arithmetic overflow
in the multiplication is caught.
Which of the three styles do you find the least dangerous?
Bruno