summaryrefslogtreecommitdiff
path: root/libgfortran/generated/minloc1_8_r16.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgfortran/generated/minloc1_8_r16.c')
-rw-r--r--libgfortran/generated/minloc1_8_r16.c52
1 files changed, 44 insertions, 8 deletions
diff --git a/libgfortran/generated/minloc1_8_r16.c b/libgfortran/generated/minloc1_8_r16.c
index 74eb70bc354..30753ce24f4 100644
--- a/libgfortran/generated/minloc1_8_r16.c
+++ b/libgfortran/generated/minloc1_8_r16.c
@@ -71,16 +71,24 @@ minloc1_8_r16 (gfc_array_i8 * const restrict retarray,
{
sstride[n] = array->dim[n].stride;
extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
+
+ if (extent[n] < 0)
+ extent[n] = 0;
}
for (n = dim; n < rank; n++)
{
sstride[n] = array->dim[n + 1].stride;
extent[n] =
array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
+
+ if (extent[n] < 0)
+ extent[n] = 0;
}
if (retarray->data == NULL)
{
+ size_t alloc_size;
+
for (n = 0; n < rank; n++)
{
retarray->dim[n].lbound = 0;
@@ -91,12 +99,21 @@ minloc1_8_r16 (gfc_array_i8 * const restrict retarray,
retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
}
- retarray->data
- = internal_malloc_size (sizeof (GFC_INTEGER_8)
- * retarray->dim[rank-1].stride
- * extent[rank-1]);
retarray->offset = 0;
retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
+
+ alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
+ * extent[rank-1];
+
+ if (alloc_size == 0)
+ {
+ /* Make sure we have a zero-sized array. */
+ retarray->dim[0].lbound = 0;
+ retarray->dim[0].ubound = -1;
+ return;
+ }
+ else
+ retarray->data = internal_malloc_size (alloc_size);
}
else
{
@@ -213,6 +230,10 @@ mminloc1_8_r16 (gfc_array_i8 * const restrict retarray,
sstride[n] = array->dim[n].stride;
mstride[n] = mask->dim[n].stride;
extent[n] = array->dim[n].ubound + 1 - array->dim[n].lbound;
+
+ if (extent[n] < 0)
+ extent[n] = 0;
+
}
for (n = dim; n < rank; n++)
{
@@ -220,10 +241,15 @@ mminloc1_8_r16 (gfc_array_i8 * const restrict retarray,
mstride[n] = mask->dim[n + 1].stride;
extent[n] =
array->dim[n + 1].ubound + 1 - array->dim[n + 1].lbound;
+
+ if (extent[n] < 0)
+ extent[n] = 0;
}
if (retarray->data == NULL)
{
+ size_t alloc_size;
+
for (n = 0; n < rank; n++)
{
retarray->dim[n].lbound = 0;
@@ -234,12 +260,22 @@ mminloc1_8_r16 (gfc_array_i8 * const restrict retarray,
retarray->dim[n].stride = retarray->dim[n-1].stride * extent[n-1];
}
- retarray->data
- = internal_malloc_size (sizeof (GFC_INTEGER_8)
- * retarray->dim[rank-1].stride
- * extent[rank-1]);
+ alloc_size = sizeof (GFC_INTEGER_8) * retarray->dim[rank-1].stride
+ * extent[rank-1];
+
retarray->offset = 0;
retarray->dtype = (array->dtype & ~GFC_DTYPE_RANK_MASK) | rank;
+
+ if (alloc_size == 0)
+ {
+ /* Make sure we have a zero-sized array. */
+ retarray->dim[0].lbound = 0;
+ retarray->dim[0].ubound = -1;
+ return;
+ }
+ else
+ retarray->data = internal_malloc_size (alloc_size);
+
}
else
{