diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2011-07-30 18:17:55 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2011-07-30 18:17:55 +0000 |
commit | 7d0300ed911d8dfec7943c88af83ed4e4563a5d1 (patch) | |
tree | 18675d430cf2966640ff55d153fa65f82065dd15 /gcc/fortran/expr.c | |
parent | b3421a06f981f875e0aee932b4f80c52dcb37e72 (diff) | |
download | gcc-7d0300ed911d8dfec7943c88af83ed4e4563a5d1.zip gcc-7d0300ed911d8dfec7943c88af83ed4e4563a5d1.tar.gz gcc-7d0300ed911d8dfec7943c88af83ed4e4563a5d1.tar.bz2 |
re PR fortran/48876 (ICE when initializing character variable with zero-length string)
2011-07-30 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/48876
* expr.c (gfc_simplify_expr): If end of a string is less
than zero, set it to zero.
2011-07-30 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/48876
* gfortran.dg/string_5.f90: New test.
From-SVN: r176961
Diffstat (limited to 'gcc/fortran/expr.c')
-rw-r--r-- | gcc/fortran/expr.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index e5394b8..549feee 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -1839,6 +1839,9 @@ gfc_simplify_expr (gfc_expr *p, int type) if (p->ref && p->ref->u.ss.end) gfc_extract_int (p->ref->u.ss.end, &end); + if (end < 0) + end = 0; + s = gfc_get_wide_string (end - start + 2); memcpy (s, p->value.character.string + start, (end - start) * sizeof (gfc_char_t)); |