mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-27 14:58:30 +00:00
Make improvements
- wcsstr() is now linearly complex - strstr16() is now linearly complex - strstr() is now vectorized on aarch64 (10x) - strstr() now uses KMP on pathological cases - memmem() is now vectorized on aarch64 (10x) - memmem() now uses KMP on pathological cases - Disable shared_ptr::owner_before until fixed - Make iswlower(), iswupper() consistent with glibc - Remove figure space from iswspace() implementation - Include line and paragraph separator in iswcntrl() - Use Musl wcwidth(), iswalpha(), iswpunct(), towlower(), towupper()
This commit is contained in:
parent
e1528a71e2
commit
7c83f4abc8
67 changed files with 5602 additions and 5165 deletions
|
@ -16,6 +16,7 @@
|
|||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/str/kmp.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
/**
|
||||
|
@ -28,19 +29,5 @@
|
|||
* @see memmem()
|
||||
*/
|
||||
wchar_t *wcsstr(const wchar_t *haystack, const wchar_t *needle) {
|
||||
size_t i;
|
||||
for (;;) {
|
||||
for (i = 0;;) {
|
||||
if (!needle[i])
|
||||
return (/*unconst*/ wchar_t *)haystack;
|
||||
if (!haystack[i])
|
||||
break;
|
||||
if (needle[i] != haystack[i])
|
||||
break;
|
||||
++i;
|
||||
}
|
||||
if (!*haystack++)
|
||||
break;
|
||||
}
|
||||
return NULL;
|
||||
return __memmem_kmp32(haystack, wcslen(haystack), needle, wcslen(needle));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue