Package: gcc
Version: 2:2.95.4-8
Severity: wishlist

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

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.

- -- System Information
Debian Release: 3.0
Architecture: i386
Kernel: Linux bohr 2.4.16 #2 SMP Wed Nov 28 05:25:00 EST 2001 i686
Locale: LANG=en_US, LC_CTYPE=en_US

Versions of packages gcc depends on:
ii  cpp                    2:2.95.4-8        The GNU C preprocessor.
ii  cpp-2.95               1:2.95.4-0.011006 The GNU C preprocessor.
ii  gcc-2.95               1:2.95.4-0.011006 The GNU C compiler.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE8Flhu5lsmI6uA7bQRAoTfAKCG/Vxgu9c0qW7KCXf7lHethM1iaQCePPqv
w+iRz/SSHiD0T5Q1eA2V6Ww=
=1dtZ
-----END PGP SIGNATURE-----


Reply via email to