[Bug fortran/53521] [4.5/4.6/4.7/4.8 Regression] Zero-byte "memory leak" with zero-sized array constructor (valgrind warning)
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed May 30 14:37:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53521
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-05-30 13:49:51 UTC ---
That is clearly a bug in the Fortran FE.
D.1888 = (integer(kind=4)[0] * restrict) __builtin_realloc ((void *)
atmp.0.data, D.1887);
if (D.1888 == 0B && D.1887 != 0)
{
_gfortran_os_error (&"Allocation would exceed memory limit"[1]{lb: 1
sz: 1});
}
if (D.1887 == 0)
{
D.1888 = 0B;
}
means that D.1888 isn't freed. POSIX says that realloc (x, 0) acts as free
only if x is not NULL, realloc (NULL, 0) acts as malloc (0), which can either
return NULL, or a unique pointer that needs to be freed.
More information about the Gcc-bugs
mailing list