https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104069
Rolf Eike Beer <e...@sf-mail.de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |e...@sf-mail.de --- Comment #23 from Rolf Eike Beer <e...@sf-mail.de> --- Using gcc12 from 4943b75e9f06f0b64ed541430bb7fbccf55fc552. $ cat rea.c #include <stdlib.h> char * compact_buffer(char *inbuf, size_t oldlen, size_t k) { char *foo; #ifdef WARN char **buf = &foo; #endif foo = realloc(inbuf, k); if (foo == NULL) { #if defined(WARN) && defined(WARN2) foo = inbuf; return inbuf; #else return inbuf; #endif } return foo; } $ gcc-12.0.1 -c -Wuse-after-free=3 -Irepos/Qsmtp/include rea.c $ gcc-12.0.1 -c -DWARN -Wuse-after-free=2 -Irepos/Qsmtp/include rea.c rea.c: In function 'compact_buffer': rea.c:17:24: warning: pointer 'inbuf' may be used after 'realloc' [-Wuse-after-free] 17 | return inbuf; | ^~~~~ rea.c:11:15: note: call to 'realloc' here 11 | foo = realloc(inbuf, k); | ^~~~~~~~~~~~~~~~~ $ gcc-12.0.1 -c -DWARN -DWARN2 -Wuse-after-free=2 -Irepos/Qsmtp/include rea.c rea.c: In function 'compact_buffer': rea.c:15:24: warning: pointer 'inbuf' may be used after 'realloc' [-Wuse-after-free] 15 | return inbuf; | ^~~~~ rea.c:11:15: note: call to 'realloc' here 11 | foo = realloc(inbuf, k); | ^~~~~~~~~~~~~~~~~ rea.c:14:21: warning: pointer 'inbuf' may be used after 'realloc' [-Wuse-after-free] 14 | foo = inbuf; | ~~~~^~~~~~~ rea.c:11:15: note: call to 'realloc' here 11 | foo = realloc(inbuf, k); | ^~~~~~~~~~~~~~~~~