| delorie.com/archives/browse.cgi | search |
> > It compiles cleanly like this:
> >
> > int main(void)
> > {
> > char *p = 0;
> > *p = 'X';
> >
> > return 0;
> > }
> > > And I do not think clean code can contain a line which can produce many
> > > errors that result in SIGSEGV but gives no hint about it.
> >
> > Try stepping up the warnings you have enabled. I don't think it's
> > possible for gcc to flag bugs like in the above example but it might
> > show up some other problem with your code.
>
> Perhaps it can flag this one when optimizing.
Not when I tried, although lint might catch this.
One reason gcc misses it may be that all-bits-zero pointer is valid on
some platforms (I think). Feel free to suggest this to the gcc
maintainers though.
My point though was not regarding the example code. I am merely
suggesting to up the warning level to something more extreme when
compiling the problem code, in order to see how clean it really is and
perhaps weed out a bug. I should add that of course I don't know what
warnings you are using (and so what you mean by clean code) - maybe
you already did this.
I'm kinda loosing the thread here, are you saying you only get SIGSEGV
under Windows ME? Did you try your program under real-mode DOS (from
boot floppy)?
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |