This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

suggestion: c compiler warning for failure to test result


A possibly useful addition similar to:

__attribute__((warn_unused_result))

might be

__attribute__((warn_untested_result))

for things like allocation failures that
are not verified before use.

For instance:

    void *malloc(size_t size);

could become

    void * __attribute((warn_untested_result)) malloc(size_t size)

so that

    #include <stdlib.h>

    struct foo {
    	    int bar;
    };

    struct foo *alloc_foo(void)
    {
    	    struct foo *baz = malloc(sizeof(struct foo));
    	    baz->bar = 1;
    	    return baz;
    }

The compiler could emit a warning on the set
of baz->bar as an intermediate test of baz
is not performed before any use of baz.

    struct foo *alloc_foo(void)
    {
    	    struct foo *baz =
    malloc(sizeof(struct foo));
    	    if (baz) baz->bar = 1;
    	    return
    baz;
    }

Similarly, alloc_foo could use that new attribute.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]