http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56391



             Bug #: 56391

           Summary: variable set but unused isn't reported. if it has been

                    used prior to setting it to a new value.

    Classification: Unclassified

           Product: gcc

           Version: 4.6.3

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: c

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: beg...@gmail.com





#include <stdio.h>

#include <stdlib.h>



void release(void*);



void

release(void *ptr)

{

    free(ptr);

    ptr = NULL;

}



int

main(void)

{

    int    *a;



    a = malloc(sizeof(int));

    if(a == NULL){

        perror("malloc");

        return 1;

    }

    *a = 42;

    printf("*a == %d\n", *a);

    release(a);

    if(a)

        printf("*a == %d\n", *a);



    return 0;

}



-------------------------------



Compiling this with "gcc -Wall -Wextra" doesn't report anything (should

be varible set but unused at line 10). This is clearly isn't what the

programmer intended and is easy to catch. Just reset the unused flag

after setting the variable.



This is also the case with g++.

Reply via email to