2008/11/20 Charles Campbell <[EMAIL PROTECTED]>: > > Bram Moolenaar wrote: >> Patch 7.2.041-7.2.048 (not sure which one) > > Hello! > > I'm starting to get some warnings that I didn't used to get... > > gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK > -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include > -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 > -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include > -I/usr/include/freetype2 -I/usr/include/libpng12 -g -O2 > -D_FORTIFY_SOURCE=1 -I/usr/include64 -D_REENTRANT -D_GNU_SOURCE > -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 > -I/usr/include/gdbm > -I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE > -I/usr/include/python2.4 -pthread -o objects/spell.o spell.c > spell.c: In function 'write_vim_spell': > spell.c:7958: warning: ignoring return value of 'fwrite', declared with > attribute warn_unused_result > spell.c:7969: warning: ignoring return value of 'fwrite', declared with > attribute warn_unused_result > spell.c:8019: warning: ignoring return value of 'fwrite', declared with > attribute warn_unused_result > spell.c:8030: warning: ignoring return value of 'fwrite', declared with > attribute warn_unused_result > spell.c:8116: warning: ignoring return value of 'fwrite', declared with > attribute warn_unused_result > spell.c:8134: warning: ignoring return value of 'fwrite', declared with > attribute warn_unused_result > spell.c:8138: warning: ignoring return value of 'fwrite', declared with > attribute warn_unused_result > spell.c:8163: warning: ignoring return value of 'fwrite', declared with > attribute warn_unused_result > spell.c:8179: warning: ignoring return value of 'fwrite', declared with > attribute warn_unused_result > spell.c:8235: warning: ignoring return value of 'fwrite', declared with > attribute warn_unused_result > spell.c:8238: warning: ignoring return value of 'fwrite', declared with > attribute warn_unused_result > spell.c:8262: warning: ignoring return value of 'fwrite', declared with > attribute warn_unused_result > spell.c: In function 'write_spell_prefcond': > spell.c:9909: warning: ignoring return value of 'fwrite', declared with > attribute warn_unused_result > > I tried preceding the calls to fwrite() with (void) casts, but that > didn't remove the warnings. Putting > int nfw; > in the write_vim_spell() and write_spell_prefcond() functions and doing > nfw= fwrite(...) > did remove the warnings. > > Regards, > Chip Campbell
Ah, yes... This is actually related to adding -D_FORTIFY_SOURCE=1 in patch 7.2.44. If we put -D_FORTIFY_SOURCE=0, that gets rid of warnings, while still fixing the crash (which happened on Ubuntu because gcc on Ubuntu is modified to use -D_FORTIFY_SOURCE=2 by default and Vim does things that cause a crash with -D_FORTIFY_SOURCE=2). But by setting -D_FORTIFY_SOURCE=0 instead of 1, we miss some possibly useful error detections at compilation time or runtime. Ignoring return value of fwrite() is dangerous in my opinion. I/Os can fail. And if they can fail, they will fail. But if we want to shut the warning, I would prefer -D_FORTIFY_SOURCE=0 than storing the return value of fwrite() in a variable which gets ignored. So that: * code does not get cluttered with warning workarounds; * and developers can still override to use -D_FORTIFY_SOURCE=1 should they want to see those warnings (since those warnings are useful in my opinion). -- Dominique --~--~---------~--~----~------------~-------~--~----~ You received this message from the "vim_dev" maillist. For more information, visit http://www.vim.org/maillist.php -~----------~----~----~----~------~----~------~--~---
