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 |