diff --git a/lib/c/string.zig b/lib/c/string.zig index 94b94c65e9a022a4fd626be8ee48882ee7794e7b..31a11b1ce95fd62ffa367c11e24d11c7025622c3 100644 --- a/lib/c/string.zig +++ b/lib/c/string.zig @@ -68,8 +68,12 @@ comptime { } fn memchr(ptr: *const anyopaque, value: c_int, len: usize) callconv(.c) ?*anyopaque { + const b: u8 = @truncate(@as(c_uint, @bitCast(value))); const bytes: [*]const u8 = @ptrCast(ptr); - return @constCast(bytes[std.mem.findScalar(u8, bytes[0..len], @truncate(@as(c_uint, @bitCast(value)))) orelse return null ..]); + for (0..len) |i| { + if (bytes[i] == b) return @constCast(&bytes[i]); + } + return null; } fn strcpy(noalias dst: [*]c_char, noalias src: [*:0]const c_char) callconv(.c) [*]c_char { diff --git a/lib/c/wchar.zig b/lib/c/wchar.zig index eb9611514141e53665b333308c85aa26054257a7..e8837247a0d6799e63796a46c918b55c647aa9f7 100644 --- a/lib/c/wchar.zig +++ b/lib/c/wchar.zig @@ -46,8 +46,11 @@ comptime { } } -fn wmemchr(ptr: [*]const wchar_t, value: wchar_t, len: usize) callconv(.c) ?[*]wchar_t { - return @constCast(ptr[std.mem.findScalar(wchar_t, ptr[0..len], value) orelse return null ..]); +fn wmemchr(ptr: [*]const wchar_t, value: wchar_t, len: usize) callconv(.c) ?*wchar_t { + for (0..len) |i| { + if (ptr[i] == value) return @constCast(&ptr[i]); + } + return null; } fn wmemcmp(a: [*]const wchar_t, b: [*]const wchar_t, len: usize) callconv(.c) c_int {