about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--string/stratcliff.c35
2 files changed, 37 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 1b7499c805..a917b6e51e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-13  Andreas Schwab  <schwab@redhat.com>
+
+	* string/stratcliff.c: Add memrchr tests.
+
 2011-10-12  Liubov Dmitrieva  <liubov.dmitrieva@gmail.com>
 
 	* sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add
diff --git a/string/stratcliff.c b/string/stratcliff.c
index 5165be2d13..5176409c5b 100644
--- a/string/stratcliff.c
+++ b/string/stratcliff.c
@@ -1,5 +1,5 @@
 /* Test for string function add boundaries of usable memory.
-   Copyright (C) 1996,1997,1999-2003,2007,2009,2010
+   Copyright (C) 1996,1997,1999-2003,2007,2009,2010,2011
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -240,7 +240,7 @@ do_test (void)
 	    }
 	}
 
-      /* This function only exists for single-byte characters.  */
+      /* These functions only exist for single-byte characters.  */
 #ifndef WCSTEST
       /* rawmemchr test */
       for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
@@ -261,6 +261,37 @@ do_test (void)
 	      adr[middle] = L('T');
 	    }
 	}
+
+      /* memrchr test */
+      for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
+	{
+	  for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
+	    {
+	      adr[middle] = L('V');
+
+	      CHAR *cp = memrchr (&adr[outer], L('V'), nchars - outer);
+
+	      if (cp - &adr[outer] != middle - outer)
+		{
+		  printf ("%s flunked for outer = %d, middle = %d\n",
+			  STRINGIFY (memrchr), outer, middle);
+		  result = 1;
+		}
+
+	      adr[middle] = L('T');
+	    }
+	}
+      for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
+	{
+	  CHAR *cp = memrchr (&adr[outer], L('V'), nchars - outer);
+
+	  if (cp != NULL)
+	    {
+	      printf ("%s flunked for outer = %d\n",
+		      STRINGIFY (memrchr), outer);
+	      result = 1;
+	    }
+	}
 #endif
 
       /* strcpy/wcscpy test */