[Patch, fortran] PR29451 - Fortran runtime error: Attempt to allocate a negative amount of memory...]
Paul Thomas
paulthomas2@wanadoo.fr
Mon Oct 16 23:40:00 GMT 2006
Steve and FX
The above patch regtested cleanly on a tree that pre-dated FX's bounds
patch. However, in regtesting prior to commit, I ran into a failure
because the second ubound of 'soda' in the submitted testcase,
negative_automatic_size.f90, was being returned as zero. Other
compilers do not do this to the ubound of an automatic array and return
the given values instead.
Looking further, I find that
print *, ubound (soda, 1), ubound (soda, 2)
print *, ubound (soda)
outputs on the first call to the procedure:
0 2
0 0
So, I think something is not right with the vector version of ubound for
this case.
Since I am convinced that this patch is doing the right thing, I have
replaced
if (.not.any(lbound (soda) <= ubound (soda))) call abort ()
with what should be the equivalent
if ((lbound (soda, 1) > ubound (soda, 1)) .and. &
(lbound (soda, 2) > ubound (soda, 2))) call abort ()
All the best
Paul
More information about the Fortran
mailing list