Follow up to PR 41872.
The following program shows at run time:
Fortran runtime error: Attempting to allocate already allocated array 'a'
type t
! Any scalar/array allocatable component will do for the wrong-code
integer, allocatable :: d
end type
type(t), allocatable :: a
allocate(a)
end
As:
struct t * a;
{
if (a == NULL) { ...} else { _gfortran_runtime_error_at ... }
There is missing a:
a = NULL;
* * *
Another issue: Assume that "a" is not allocated. Then the following will crash:
if (a->d != 0B)
{
__builtin_free ((void *) a->d);
}
a->d = 0B;
* * *
Third issue: There is no automatic deallocation of "a", only of its component
"a%d".
--
Summary: Missed initialization/dealloc of allocatable scalar DT
with allocatable component
Product: gcc
Version: 4.5.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: burnus at gcc dot gnu dot org
OtherBugsDependingO 42361
nThis:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42647