]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR libfortran/34980 (Segfault in shape given a scalar)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Mon, 28 Jan 2008 19:02:47 +0000 (19:02 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Mon, 28 Jan 2008 19:02:47 +0000 (19:02 +0000)
2008-01-27  Thomas Koenig  <tkoenig@gcc.gnu.org>

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
libgfortran/generated/shape_i16.c
libgfortran/generated/shape_i4.c
libgfortran/generated/shape_i8.c
libgfortran/m4/shape.m4

index a83ee24daae774631bedd286471e548387668fb9..b71eb30065eaad8afd7b6e86824cb782aed637cd 100644 (file)
@@ -1,3 +1,11 @@
+2008-01-27  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       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  <tkoenig@gcc.gnu.org>
 
        PR libfofortran/34887
index a89c70acef8c3ac2ad1adf86d53e12210a9460d9..77274d6002a8404b0a87943af4e108e6a1338b6f 100644 (file)
@@ -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] =
index 4f6d62e6af7b94690ab1377d5eb97a7ed8b90d7a..787ba544c21f7fa3a9a5ab78e8ae843810acc916 100644 (file)
@@ -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] =
index a4a0ff0e2d5fa300e6af8910ee783c75f9d7525c..f318b170ab9e4a2cd50d49bd2fb335d163c3f5e6 100644 (file)
@@ -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] =
index f9dbcf79954e5f5fa7ebdb59f61846df7661bb31..3bda0ad8cbb18114428a5aa02de849f22f64903b 100644 (file)
@@ -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] =