diff options
author | Bud Davis <bdavis9659@comcast.net> | 2004-08-25 00:14:07 +0000 |
---|---|---|
committer | Bud Davis <bdavis@gcc.gnu.org> | 2004-08-25 00:14:07 +0000 |
commit | 02d735f6bd9325efc25367cfd399557e19bb2532 (patch) | |
tree | bf1547a2a432ec2b371bd167aa5e7c203607d55e | |
parent | 1e19ac749db3cd39fb22d58775282c0058bc3c8a (diff) | |
download | gcc-02d735f6bd9325efc25367cfd399557e19bb2532.zip gcc-02d735f6bd9325efc25367cfd399557e19bb2532.tar.gz gcc-02d735f6bd9325efc25367cfd399557e19bb2532.tar.bz2 |
re PR libfortran/17164 (index function not working properly)
2004-08-24 Bud Davis <bdavis9659@comcast.net>
PR fortran/17164
* runtime/string_intrinsics.c (string_index):check for
substring longer than string.
* gfortran.dg/pr17164.f90: New test.
From-SVN: r86527
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr17164.f90 | 10 | ||||
-rw-r--r-- | libgfortran/ChangeLog | 6 | ||||
-rw-r--r-- | libgfortran/intrinsics/string_intrinsics.c | 3 |
4 files changed, 24 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 23fff49..ba02334 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-08-24 Bud Davis <bdavis9659@comcast.net> + + PR fortran/17164 + * gfortran.dg/pr17164.f90: New test. + 2004-08-24 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> * gcc.dg/tree-ssa/loop-1.c: New test. diff --git a/gcc/testsuite/gfortran.dg/pr17164.f90 b/gcc/testsuite/gfortran.dg/pr17164.f90 new file mode 100644 index 0000000..0cfd994 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr17164.f90 @@ -0,0 +1,10 @@ +! pr17164 +! index aborts when substring is longer than string + implicit none + character*5 x + integer i + x='12345' + i=index(x,'blablabl') + if (i.ne.0) call abort + end + diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 36b7069..1cb06dd 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2004-08-24 Bud Davis <bdavis9659@comcast.net> + + PR fortran/17164 + * runtime/string_intrinsics.c (string_index):check for + substring longer than string. + 2004-08-24 David Edelsohn <edelsohn@gnu.org> * Makefile.am (libgfortran_la_LDFLAGS): Add -lm. diff --git a/libgfortran/intrinsics/string_intrinsics.c b/libgfortran/intrinsics/string_intrinsics.c index 2cd07a2..5d23126 100644 --- a/libgfortran/intrinsics/string_intrinsics.c +++ b/libgfortran/intrinsics/string_intrinsics.c @@ -221,6 +221,9 @@ string_index (GFC_INTEGER_4 slen, const char * str, GFC_INTEGER_4 sslen, if (sslen == 0) return 1; + if (sslen > slen) + return 0; + if (!back) { last = slen + 1 - sslen; |