Page MenuHomeFreeBSD

D2657.diff
No OneTemporary

D2657.diff

Index: head/contrib/netbsd-tests/lib/libc/string/t_memmem.c
===================================================================
--- head/contrib/netbsd-tests/lib/libc/string/t_memmem.c
+++ head/contrib/netbsd-tests/lib/libc/string/t_memmem.c
@@ -75,7 +75,7 @@
ATF_TC_BODY(memmem_basic, tc)
{
-#if defined(__darwin__) || defined(__FreeBSD__)
+#if defined(__darwin__)
expect(memmem(b2, lb2, p0, lp0) == NULL);
expect(memmem(b0, lb0, p0, lp0) == NULL);
#else
Index: head/lib/libc/string/memmem.3
===================================================================
--- head/lib/libc/string/memmem.3
+++ head/lib/libc/string/memmem.3
@@ -26,7 +26,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd August 24, 2005
+.Dd May 26, 2015
.Dt MEMMEM 3
.Os
.Sh NAME
@@ -51,14 +51,12 @@
.Fa big .
.Sh RETURN VALUES
If
-.Fa big_len
-is smaller than
-.Fa little_len ,
-if
.Fa little_len
-is 0, if
-.Fa big_len
-is 0 or if
+is zero
+.Fa big
+is returned (that is, an empty little is deemed to match at the beginning of
+big);
+if
.Fa little
occurs nowhere in
.Fa big ,
@@ -84,3 +82,11 @@
.Sh BUGS
This function was broken in Linux libc up to and including version 5.0.9
and in GNU libc prior to version 2.1.
+Prior to
+.Fx 11.0
+.Nm
+returned
+.Dv NULL
+when
+.Fa little_len
+equals 0.
Index: head/lib/libc/string/memmem.c
===================================================================
--- head/lib/libc/string/memmem.c
+++ head/lib/libc/string/memmem.c
@@ -42,9 +42,9 @@
const char *cl = (const char *)l;
const char *cs = (const char *)s;
- /* we need something to compare */
- if (l_len == 0 || s_len == 0)
- return NULL;
+ /* empty "s" matches the beginning of "l" */
+ if (s_len == 0)
+ return (void *)cl;
/* "s" must be smaller or equal to "l" */
if (l_len < s_len)

File Metadata

Mime Type
text/plain
Expires
Fri, Nov 21, 11:54 PM (21 h, 24 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25725534
Default Alt Text
D2657.diff (1 KB)

Event Timeline