]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2009-04-26 Steven G. Kargl <kargl@gcc.gnu.org>
authorkargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 26 Apr 2009 19:27:50 +0000 (19:27 +0000)
committerkargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 26 Apr 2009 19:27:50 +0000 (19:27 +0000)
PR fortran/39893
* gfortran.dg/assumed_charlen_dummy.f90: New Test.

2009-04-26  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/39893
fortran/data.c (gfc_assign_data_value): If the lvalue is an
assumed character length entity in a data statement, then
return FAILURE to prevent segmentation fault.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146816 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/data.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/assumed_charlen_dummy.f90 [new file with mode: 0644]

index 6c2a442f7836a96c6143edfced64b930284df3ae..daafc06d079d79f93e7f517b589866a1b89aaba1 100644 (file)
@@ -1,3 +1,10 @@
+2009-04-26  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/39893
+       fortran/data.c (gfc_assign_data_value): If the lvalue is an 
+       assumed character length entity in a data statement, then 
+       return FAILURE to prevent segmentation fault.
+
 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
 
        * trans-decl.c: Include pointer-set.h.
index 09dde150b225b628fc924bcaefcdc6ced582859e..5829c7f9c672e083dd723a942a23c20e5bdf0887 100644 (file)
@@ -416,7 +416,11 @@ gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index)
     }
 
   if (ref || last_ts->type == BT_CHARACTER)
-    expr = create_character_intializer (init, last_ts, ref, rvalue);
+    {
+      if (lvalue->ts.cl->length == NULL && !(ref && ref->u.ss.length != NULL))
+       return FAILURE;
+      expr = create_character_intializer (init, last_ts, ref, rvalue);
+    }
   else
     {
       /* Overwriting an existing initializer is non-standard but usually only
index c9f21cff876e99b876e7569428250c76fd3d5046..2c080fad8eece59424d1c6c6aed2e7026cb2227b 100644 (file)
@@ -1,3 +1,8 @@
+2009-04-26  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/39893
+       * gfortran.dg/assumed_charlen_dummy.f90: New Test.
+
 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
 
        PR inline-asm/39543
diff --git a/gcc/testsuite/gfortran.dg/assumed_charlen_dummy.f90 b/gcc/testsuite/gfortran.dg/assumed_charlen_dummy.f90
new file mode 100644 (file)
index 0000000..04f0b9f
--- /dev/null
@@ -0,0 +1,10 @@
+! { dg-do compile }
+! Test the fix for PR fortran/39893.
+! Original testcase provided by Deji Akingunola.
+! Reduced testcase provided by Dominique d'Humieres.
+!
+      SUBROUTINE XAUTOGET()
+      CHARACTER*(*) DICBA    ! { dg-error "Entity with assumed character" }
+      DATA DICBA /"CLIP" /
+      RETURN
+      END