<p><b>duda</b> 2012-03-28 15:29:40 -0600 (Wed, 28 Mar 2012)</p><p>BRANCH COMMIT<br>
<br>
Fix to avoid array bounds errors for 0-sized arrays.<br>
With this new code, some compilers complain about declaring arrays with size 0, but it is nonetheless legitimate to do so.<br>
<br>
<br>
M src/framework/mpas_io_streams.F<br>
</p><hr noshade><pre><font color="gray">Modified: branches/omp_blocks/io/src/framework/mpas_io_streams.F
===================================================================
--- branches/omp_blocks/io/src/framework/mpas_io_streams.F        2012-03-28 20:51:22 UTC (rev 1729)
+++ branches/omp_blocks/io/src/framework/mpas_io_streams.F        2012-03-28 21:29:40 UTC (rev 1730)
@@ -208,6 +208,8 @@
type (field1dInteger), pointer :: field_ptr
character (len=64), dimension(5) :: dimNames
character (len=64), dimension(:), pointer :: dimNamesInq
+ character (len=64), dimension(0) :: dimNames0
+ integer, dimension(0) :: dimSizes0
integer, dimension(:), pointer :: indices
type (field_list_type), pointer :: field_list_cursor
type (field_list_type), pointer :: new_field_list_node
@@ -236,10 +238,9 @@
if (field % isSuperArray) then
-!MGD This could use some testing, in particular, so see whether dimNames(2:1) will pass a 0-sized array
do i=1,size(field % constituentNames)
- call MPAS_streamAddField_generic(stream, trim(field % constituentNames(i)), MPAS_IO_INT, field % dimNames(2:ndims), &
- field % dimSizes(2:ndims), field % hasTimeDimension, isDecomposed, totalDimSize, globalDimSize, &
+ call MPAS_streamAddField_generic(stream, trim(field % constituentNames(i)), MPAS_IO_INT, dimNames0, &
+ dimSizes0, field % hasTimeDimension, isDecomposed, totalDimSize, globalDimSize, &
indices, io_err)
end do
else
@@ -541,6 +542,8 @@
type (field1dReal), pointer :: field_ptr
character (len=64), dimension(5) :: dimNames
character (len=64), dimension(:), pointer :: dimNamesInq
+ character (len=64), dimension(0) :: dimNames0
+ integer, dimension(0) :: dimSizes0
integer, dimension(:), pointer :: indices
type (field_list_type), pointer :: field_list_cursor
type (field_list_type), pointer :: new_field_list_node
@@ -569,10 +572,9 @@
if (field % isSuperArray) then
-!MGD This could use some testing, in particular, so see whether dimNames(2:1) will pass a 0-sized array
do i=1,size(field % constituentNames)
- call MPAS_streamAddField_generic(stream, trim(field % constituentNames(i)), MPAS_IO_DOUBLE, field % dimNames(2:ndims), &
- field % dimSizes(2:ndims), field % hasTimeDimension, isDecomposed, totalDimSize, globalDimSize, &
+ call MPAS_streamAddField_generic(stream, trim(field % constituentNames(i)), MPAS_IO_DOUBLE, dimNames0, &
+ dimSizes0, field % hasTimeDimension, isDecomposed, totalDimSize, globalDimSize, &
indices, io_err)
end do
else
</font>
</pre>