+2018-01-10 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/82367
+ * resolve.c (resolve_allocate_expr): Check for NULL pointer.
+
2018-01-10 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/83093
if (code->ext.alloc.ts.type == BT_CHARACTER && !e->ts.deferred
&& !UNLIMITED_POLY (e))
{
- int cmp = gfc_dep_compare_expr (e->ts.u.cl->length,
- code->ext.alloc.ts.u.cl->length);
+ int cmp;
+
+ if (!e->ts.u.cl->length)
+ goto failure;
+
+ cmp = gfc_dep_compare_expr (e->ts.u.cl->length,
+ code->ext.alloc.ts.u.cl->length);
if (cmp == 1 || cmp == -1 || cmp == -3)
{
gfc_error ("Allocating %s at %L with type-spec requires the same "
+2018-01-10 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/82367
+ * gfortran.dg/deferred_character_18.f90: New test.
+
2018-01-10 Martin Sebor <msebor@redhat.com>
PR tree-optimization/83671
--- /dev/null
+! { dg-do compile }
+! PR Fortran/82367
+! Contributed by Walter Spector <w6ws at earthlink dot net>
+module cls_allocmod
+ implicit none
+
+contains
+
+ subroutine cls_alloc (n, str)
+ integer, intent(in) :: n
+ character(*), allocatable, intent(out) :: str
+! Note: Star ^ should have been a colon (:)
+
+ allocate (character(n)::str)
+
+ end subroutine
+
+end module
+
+program cls
+ use cls_allocmod
+ implicit none
+
+ character(:), allocatable :: s
+
+ call cls_alloc(42, s) ! { dg-error "allocatable or pointer dummy argument" }
+ print *, 'string len =', len(s)
+
+end program