aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBud Davis <bdavis9659@comcast.net>2004-08-25 00:14:07 +0000
committerBud Davis <bdavis@gcc.gnu.org>2004-08-25 00:14:07 +0000
commit02d735f6bd9325efc25367cfd399557e19bb2532 (patch)
treebf1547a2a432ec2b371bd167aa5e7c203607d55e
parent1e19ac749db3cd39fb22d58775282c0058bc3c8a (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr17164.f9010
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/intrinsics/string_intrinsics.c3
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;