>Submitter-Id: net >Originator: Anthony DeRobertis <[EMAIL PROTECTED]> >Organization: The Debian Project >Confidential: no >Synopsis: >Severity: non-critical >Priority: low >Category: c >Class: change-request >Release: 3.1 (Debian) (Debian unstable) >Environment: System: Debian GNU/Linux (unstable) Architecture: i686 Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii gcc-3.1 3.1-2 The GNU C compiler. ii binutils 2.12.90.0.7-1 The GNU assembler, linker and binary utiliti ii libc6 2.2.5-6 GNU C Library: Shared libraries and Timezone host: i386-linux configured with: /mnt/data/gcc-3.1/gcc-3.1-3.1ds2/src/configure -v --enable-languages=c,c++,java,f77,proto,objc,ada --prefix=/usr --mandir=$\(prefix\)/share/man --infodir=$\(prefix\)/share/info --with-gxx-include-dir=$\(prefix\)/include/g++-v3-3.1 --enable-shared --with-system-zlib --enable-long-long --enable-nls --without-included-gettext --enable-clocale=gnu --enable-threads=posix --enable-java-gc=boehm --enable-objc-gc i386-linux >Description: [ Reported to the Debian BTS as report #123468. Please CC [EMAIL PROTECTED] on replies. Log of report can be found at http://bugs.debian.org/123468 ]
Anthony DeRobertis: I realize this is probably implemented easily, but a warning about asserts with obvious side effects would be nice. For example: assert(ptr = malloc(...)) /* programmer didn't understand/think about assert */ assert(*ptr++) /* ditto */ assert(f()) /* very suspicious */ assert(i = 1) /* programmer made typo */ Some of these may be caught by other warnings (e.g., assignment in conditional), at least on #undef NDEBUG builds. The problem with these is, of course, that everything works fine for the debugging builds.[0] Then you do a release candidate build, and suddenly everything breaks. I wouldn't worry about: #ifndef NDEBUG ... ptr++ ... #endif btw, because that looks a lot more guilty to even a novice than assert(), which looks like a function call. [0] I'm not sure if assert is allowed to double-use its macro arguments or not. So its possible that the standard would allow some of the above to break, even on debugging builds. >How-To-Repeat: >Fix: -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]