summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4>2018-01-18 18:27:22 +0000
committerkargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4>2018-01-18 18:27:22 +0000
commit37b2d1d79b6b897befd9a434252e092d0a082f32 (patch)
tree65411d2b06c419e0ef8adff52c25f2f4947c4e73
parentd56301ce0da31950df7a9aaeffdf733162f1d304 (diff)
2018-01-18 Harald Anlauf <anlauf@gmx.de>
Backport from mainline PR fortran/83864 * expr.c (gfc_apply_init): Do not dereference NULL pointer. 2018-01-18 Harald Anlauf <anlauf@gmx.de> Backport from mainline PR fortran/83864 * gfortran.dg/pr83864.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@256857 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/expr.c3
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/pr83864.f9013
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 14cc03a02151..9da69f5d610c 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2018-01-18 Harald Anlauf <anlauf@gmx.de>
+
+ Backport from mainline
+ PR fortran/83864
+ * expr.c (gfc_apply_init): Do not dereference NULL pointer.
+
2018-01-17 Harald Anlauf <anlauf@gmx.de>
Backport from mainline
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index bcf66bb445be..f347c7537023 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -4130,7 +4130,8 @@ gfc_apply_init (gfc_typespec *ts, symbol_attribute *attr, gfc_expr *init)
if (init->expr_type == EXPR_CONSTANT)
gfc_set_constant_character_len (len, init, -1);
else if (init
- && init->ts.u.cl
+ && init->ts.type == BT_CHARACTER
+ && init->ts.u.cl && init->ts.u.cl->length
&& mpz_cmp (ts->u.cl->length->value.integer,
init->ts.u.cl->length->value.integer))
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index eb5b8187f96f..521b06aa1282 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2018-01-18 Harald Anlauf <anlauf@gmx.de>
+
+ Backport from mainline
+ PR fortran/83864
+ * gfortran.dg/pr83864.f90: New test.
+
2018-01-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Backport from mainline
diff --git a/gcc/testsuite/gfortran.dg/pr83864.f90 b/gcc/testsuite/gfortran.dg/pr83864.f90
new file mode 100644
index 000000000000..3bf568ab3166
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr83864.f90
@@ -0,0 +1,13 @@
+! { dg-do run }
+! PR fortran/83864
+!
+! Derived from PR by Contributed by Gerhard Steinmetz <gscfq@t-online.de>
+!
+program p
+ implicit none
+ type t
+ character :: c(3) = transfer('abc','z',3)
+ end type t
+ type(t) :: x
+ if (any (x%c /= ["a", "b", "c"])) call abort ()
+end