string_intrinsics.c (string_verify): Fix off by one error.
authorPaul Brook <paul@codesourcery.com>
Thu, 7 Oct 2004 20:19:32 +0000 (20:19 +0000)
committerPaul Brook <pbrook@gcc.gnu.org>
Thu, 7 Oct 2004 20:19:32 +0000 (20:19 +0000)
* intrinsics/string_intrinsics.c (string_verify): Fix off by one
error.
testsuite/
* gfortran.dg/intrinsic_verify_1.f90: New test.

From-SVN: r88704

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/intrinsic_verify_1.f90 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/intrinsics/string_intrinsics.c

index b4cd8d832746d257e71dbe8022d6406f3165a991..b181df863b17bfcf9a295630c9009bf4f748a3d2 100644 (file)
@@ -1,3 +1,7 @@
+2004-10-07  Paul Brook  <paul@codesourcery.com>
+
+       * gfortran.dg/intrinsic_verify_1.f90: New test.
+
 2004-10-07  Paul Brook  <paul@codesourcery.com>
 
        * gfortran.dg/empty_format_1.f90: Remove stray commas.
diff --git a/gcc/testsuite/gfortran.dg/intrinsic_verify_1.f90 b/gcc/testsuite/gfortran.dg/intrinsic_verify_1.f90
new file mode 100644 (file)
index 0000000..c894043
--- /dev/null
@@ -0,0 +1,12 @@
+! { dg-do run }
+! Test the verify intrinsic.  We were ignoring the last character.
+program prog
+  character(len=1) :: c1
+  character(len=4) :: c4
+  c1 = "E"
+  if (verify(c1, "1") .ne. 1) call abort
+  c4 = "ABBA"
+  if (verify(c4, "A") .ne. 2) call abort
+  if (verify(c4, "A", back = .true.) .ne. 3) call abort
+  if (verify(c4, "AB") .ne. 0) call abort
+end program
index 82b0577dec269b2ad449fba6378bbe411d63e584..f361408a50399243cbcccdd853672ca647765105 100644 (file)
@@ -1,3 +1,8 @@
+2004-10-07  Paul Brook  <paul@codesourcery.com>
+
+       * intrinsics/string_intrinsics.c (string_verify): Fix off by one
+       error.
+
 2004-10-06  Paul Brook  <paul@codesourcery.com>
 
        PR libfortran/17709
index 5d231268ab6d3962ce71dbe293b6ca38362fe09f..ac70a9bb8734f929795d1c2f6760f72ed9b80832 100644 (file)
@@ -346,17 +346,16 @@ string_verify (GFC_INTEGER_4 slen, const char * str, GFC_INTEGER_4 setlen,
 
   if (back)
     {
-      last =  0;
+      last = -1;
       start = slen - 1;
       delta = -1;
     }
   else
     {
-      last = slen - 1;
+      last = slen;
       start = 0;
       delta = 1;
     }
-  i = 0;
   for (; start != last; start += delta)
     {
       for (i = 0; i < setlen; i++)