[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