diff options
Diffstat (limited to 'libgfortran/generated/maxval_r8.c')
-rw-r--r-- | libgfortran/generated/maxval_r8.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/libgfortran/generated/maxval_r8.c b/libgfortran/generated/maxval_r8.c index 5ba70b6..b12f34d 100644 --- a/libgfortran/generated/maxval_r8.c +++ b/libgfortran/generated/maxval_r8.c @@ -52,8 +52,15 @@ maxval_r8 (gfc_array_r8 * const restrict retarray, int continue_loop; /* Make dim zero based to avoid confusion. */ - dim = (*pdim) - 1; rank = GFC_DESCRIPTOR_RANK (array) - 1; + dim = (*pdim) - 1; + + if (unlikely (dim < 0 || dim > rank)) + { + runtime_error ("Dim argument incorrect in MAXVAL intrinsic: " + "is %ld, should be between 1 and %ld", + (long int) dim + 1, (long int) rank + 1); + } len = GFC_DESCRIPTOR_EXTENT(array,dim); if (len < 0) @@ -217,8 +224,8 @@ mmaxval_r8 (gfc_array_r8 * const restrict retarray, GFC_REAL_8 * restrict dest; const GFC_REAL_8 * restrict base; const GFC_LOGICAL_1 * restrict mbase; - int rank; - int dim; + index_type rank; + index_type dim; index_type n; index_type len; index_type delta; @@ -228,6 +235,14 @@ mmaxval_r8 (gfc_array_r8 * const restrict retarray, dim = (*pdim) - 1; rank = GFC_DESCRIPTOR_RANK (array) - 1; + + if (unlikely (dim < 0 || dim > rank)) + { + runtime_error ("Dim argument incorrect in MAXVAL intrinsic: " + "is %ld, should be between 1 and %ld", + (long int) dim + 1, (long int) rank + 1); + } + len = GFC_DESCRIPTOR_EXTENT(array,dim); if (len <= 0) return; @@ -433,6 +448,13 @@ smaxval_r8 (gfc_array_r8 * const restrict retarray, dim = (*pdim) - 1; rank = GFC_DESCRIPTOR_RANK (array) - 1; + if (unlikely (dim < 0 || dim > rank)) + { + runtime_error ("Dim argument incorrect in MAXVAL intrinsic: " + "is %ld, should be between 1 and %ld", + (long int) dim + 1, (long int) rank + 1); + } + for (n = 0; n < dim; n++) { extent[n] = GFC_DESCRIPTOR_EXTENT(array,n); |