about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--string/stratcliff.c42
2 files changed, 44 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 3cb4aa85af..7da4825bb5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2000-12-09  Ulrich Drepper  <drepper@redhat.com>
 
+	* string/stratcliff.c: Add tests for stpncpy, memcpy, and mempcpy.
+
 	* Makeconfig (default_cflags): Make -O2 the default for stable
 	releases.
 
diff --git a/string/stratcliff.c b/string/stratcliff.c
index bd95a2c564..43ca355649 100644
--- a/string/stratcliff.c
+++ b/string/stratcliff.c
@@ -209,6 +209,48 @@ main (int argc, char *argv[])
 	      adr[inner] = 'T';
 	    }
         }
+
+      /* stpncpy test */
+      for (outer = size - 1; outer >= MAX (0, size - 128); --outer)
+        {
+          for (middle = MAX (outer, size - 64); middle < size; ++middle)
+	    {
+	      adr[middle] = '\0';
+
+	      for (inner = 0; inner < size - outer; ++ inner)
+		{
+		  if ((stpncpy (dest, &adr[outer], inner) - dest)
+		      != MIN (inner, middle - outer))
+		    {
+		      printf ("stpncpy flunked for outer = %d, middle = %d, "
+			      "inner = %d\n", outer, middle, inner);
+		      result = 1;
+		    }
+		}
+
+	      adr[middle] = 'T';
+	    }
+        }
+
+      /* memcpy test */
+      for (outer = size - 1; outer >= MAX (0, size - 128); --outer)
+	for (inner = 0; inner < size - outer; ++inner)
+	  if (memcpy (dest, &adr[outer], inner) !=  dest)
+	    {
+	      printf ("memcpy flunked for outer = %d, inner = %d\n",
+		      outer, inner);
+	      result = 1;
+	    }
+
+      /* mempcpy test */
+      for (outer = size - 1; outer >= MAX (0, size - 128); --outer)
+	for (inner = 0; inner < size - outer; ++inner)
+	  if (mempcpy (dest, &adr[outer], inner) !=  dest + inner)
+	    {
+	      printf ("mempcpy flunked for outer = %d, inner = %d\n",
+		      outer, inner);
+	      result = 1;
+	    }
     }
 
   return result;