From bc81405676677a2216476eaebc34d23adf855f83 Mon Sep 17 00:00:00 2001 From: Thomas Koenig Date: Mon, 28 Jan 2008 19:02:47 +0000 Subject: [PATCH] re PR libfortran/34980 (Segfault in shape given a scalar) 2008-01-27 Thomas Koenig PR libfortran/34980 * m4/shape.m4: If return array is empty, return early. * generated/shape_i4.c: Regenerated. * generated/shape_i8.c: Regenerated. * generated/shape_i16.c: Regenerated. From-SVN: r131915 --- libgfortran/ChangeLog | 8 ++++++++ libgfortran/generated/shape_i16.c | 3 +++ libgfortran/generated/shape_i4.c | 3 +++ libgfortran/generated/shape_i8.c | 3 +++ libgfortran/m4/shape.m4 | 3 +++ 5 files changed, 20 insertions(+) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index a83ee24daae..b71eb30065e 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,11 @@ +2008-01-27 Thomas Koenig + + PR libfortran/34980 + * m4/shape.m4: If return array is empty, return early. + * generated/shape_i4.c: Regenerated. + * generated/shape_i8.c: Regenerated. + * generated/shape_i16.c: Regenerated. + 2008-01-26 Thomas Koenig PR libfofortran/34887 diff --git a/libgfortran/generated/shape_i16.c b/libgfortran/generated/shape_i16.c index a89c70acef8..77274d6002a 100644 --- a/libgfortran/generated/shape_i16.c +++ b/libgfortran/generated/shape_i16.c @@ -48,6 +48,9 @@ shape_16 (gfc_array_i16 * const restrict ret, stride = ret->dim[0].stride; + if (ret->dim[0].ubound < ret->dim[0].lbound) + return; + for (n = 0; n < GFC_DESCRIPTOR_RANK (array); n++) { ret->data[n * stride] = diff --git a/libgfortran/generated/shape_i4.c b/libgfortran/generated/shape_i4.c index 4f6d62e6af7..787ba544c21 100644 --- a/libgfortran/generated/shape_i4.c +++ b/libgfortran/generated/shape_i4.c @@ -48,6 +48,9 @@ shape_4 (gfc_array_i4 * const restrict ret, stride = ret->dim[0].stride; + if (ret->dim[0].ubound < ret->dim[0].lbound) + return; + for (n = 0; n < GFC_DESCRIPTOR_RANK (array); n++) { ret->data[n * stride] = diff --git a/libgfortran/generated/shape_i8.c b/libgfortran/generated/shape_i8.c index a4a0ff0e2d5..f318b170ab9 100644 --- a/libgfortran/generated/shape_i8.c +++ b/libgfortran/generated/shape_i8.c @@ -48,6 +48,9 @@ shape_8 (gfc_array_i8 * const restrict ret, stride = ret->dim[0].stride; + if (ret->dim[0].ubound < ret->dim[0].lbound) + return; + for (n = 0; n < GFC_DESCRIPTOR_RANK (array); n++) { ret->data[n * stride] = diff --git a/libgfortran/m4/shape.m4 b/libgfortran/m4/shape.m4 index f9dbcf79954..3bda0ad8cbb 100644 --- a/libgfortran/m4/shape.m4 +++ b/libgfortran/m4/shape.m4 @@ -49,6 +49,9 @@ shape_'rtype_kind` ('rtype` * const restrict ret, stride = ret->dim[0].stride; + if (ret->dim[0].ubound < ret->dim[0].lbound) + return; + for (n = 0; n < GFC_DESCRIPTOR_RANK (array); n++) { ret->data[n * stride] = -- 2.30.2