* tests/test-strstr.c (main): Add test of long needle.
* tests/test-strcasestr.c (main): Likewise.
* tests/test-c-strstr.c (main): Likewise.
* tests/test-c-strcasestr.c (main): Likewise.
* tests/test-memmem.c (main): Likewise.
+2018-09-12 Bruno Haible <bruno@clisp.org>
+
+ Add test case from a recent glibc bug.
+ * tests/test-strstr.c (main): Add test of long needle.
+ * tests/test-strcasestr.c (main): Likewise.
+ * tests/test-c-strstr.c (main): Likewise.
+ * tests/test-c-strcasestr.c (main): Likewise.
+ * tests/test-memmem.c (main): Likewise.
+
2018-09-12 Bruno Haible <bruno@clisp.org>
Apply Eric Blake's improvements from 2011-02-25 to more tests.
free (haystack);
}
+ /* Test long needles. */
+ {
+ size_t m = 1024;
+ char *haystack = (char *) malloc (2 * m + 1);
+ char *needle = (char *) malloc (m + 1);
+ if (haystack != NULL && needle != NULL)
+ {
+ const char *p;
+ haystack[0] = 'x';
+ memset (haystack + 1, ' ', m - 1);
+ memset (haystack + m, 'x', m);
+ haystack[2 * m] = '\0';
+ memset (needle, 'X', m);
+ needle[m] = '\0';
+ p = c_strcasestr (haystack, needle);
+ ASSERT (p);
+ ASSERT (p - haystack == m);
+ }
+ free (needle);
+ free (haystack);
+ }
+
return 0;
}
free (haystack);
}
+ /* Test long needles. */
+ {
+ size_t m = 1024;
+ char *haystack = (char *) malloc (2 * m + 1);
+ char *needle = (char *) malloc (m + 1);
+ if (haystack != NULL && needle != NULL)
+ {
+ const char *p;
+ haystack[0] = 'x';
+ memset (haystack + 1, ' ', m - 1);
+ memset (haystack + m, 'x', m);
+ haystack[2 * m] = '\0';
+ memset (needle, 'x', m);
+ needle[m] = '\0';
+ p = c_strstr (haystack, needle);
+ ASSERT (p);
+ ASSERT (p - haystack == m);
+ }
+ free (needle);
+ free (haystack);
+ }
+
return 0;
}
free (haystack);
}
+ /* Test long needles. */
+ {
+ size_t m = 1024;
+ char *haystack = (char *) malloc (2 * m + 1);
+ char *needle = (char *) malloc (m + 1);
+ if (haystack != NULL && needle != NULL)
+ {
+ const char *p;
+ haystack[0] = 'x';
+ memset (haystack + 1, ' ', m - 1);
+ memset (haystack + m, 'x', m);
+ haystack[2 * m] = '\0';
+ memset (needle, 'x', m);
+ needle[m] = '\0';
+ p = memmem (haystack, strlen (haystack), needle, strlen (needle));
+ ASSERT (p);
+ ASSERT (p - haystack == m);
+ }
+ free (needle);
+ free (haystack);
+ }
+
return 0;
}
free (haystack);
}
+ /* Test long needles. */
+ {
+ size_t m = 1024;
+ char *haystack = (char *) malloc (2 * m + 1);
+ char *needle = (char *) malloc (m + 1);
+ if (haystack != NULL && needle != NULL)
+ {
+ const char *p;
+ haystack[0] = 'x';
+ memset (haystack + 1, ' ', m - 1);
+ memset (haystack + m, 'x', m);
+ haystack[2 * m] = '\0';
+ memset (needle, 'X', m);
+ needle[m] = '\0';
+ p = strcasestr (haystack, needle);
+ ASSERT (p);
+ ASSERT (p - haystack == m);
+ }
+ free (needle);
+ free (haystack);
+ }
+
return 0;
}
free (haystack);
}
+ /* Test long needles. */
+ {
+ size_t m = 1024;
+ char *haystack = (char *) malloc (2 * m + 1);
+ char *needle = (char *) malloc (m + 1);
+ if (haystack != NULL && needle != NULL)
+ {
+ const char *p;
+ haystack[0] = 'x';
+ memset (haystack + 1, ' ', m - 1);
+ memset (haystack + m, 'x', m);
+ haystack[2 * m] = '\0';
+ memset (needle, 'x', m);
+ needle[m] = '\0';
+ p = strstr (haystack, needle);
+ ASSERT (p);
+ ASSERT (p - haystack == m);
+ }
+ free (needle);
+ free (haystack);
+ }
+
return 0;
}