diff options
| author | enh-google <enh@google.com> | 2025-09-03 14:00:38 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-03 14:00:38 -0400 |
| commit | ded5f433dedf4a3419548929ac3dfa826e11d2e1 (patch) | |
| tree | 0dc9566fe444ed21d135a438cd979f94a29c3605 /libc/src/string | |
| parent | 878fa7b2686a8776d1f36a5bb516c95a07838825 (diff) | |
[libc] fixed signed char issues in strsep()/strtok()/strtok_r(). (#156705)
Also add the missing tests for all the related functions (even the ones
that were already right), and add the missing bazel build rules.
Diffstat (limited to 'libc/src/string')
| -rw-r--r-- | libc/src/string/string_utils.h | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/libc/src/string/string_utils.h b/libc/src/string/string_utils.h index 26e9adde0d66..10803488b6cf 100644 --- a/libc/src/string/string_utils.h +++ b/libc/src/string/string_utils.h @@ -212,28 +212,28 @@ LIBC_INLINE char *string_token(char *__restrict src, static_assert(CHAR_BIT == 8, "bitset of 256 assumes char is 8 bits"); cpp::bitset<256> delims; for (; *delimiter_string != '\0'; ++delimiter_string) - delims.set(static_cast<size_t>(*delimiter_string)); + delims.set(*reinterpret_cast<const unsigned char *>(delimiter_string)); - char *tok_start = src; + unsigned char *tok_start = reinterpret_cast<unsigned char *>(src); if constexpr (SkipDelim) - while (*tok_start != '\0' && delims.test(static_cast<size_t>(*tok_start))) + while (*tok_start != '\0' && delims.test(*tok_start)) ++tok_start; if (*tok_start == '\0' && SkipDelim) { *context = nullptr; return nullptr; } - char *tok_end = tok_start; - while (*tok_end != '\0' && !delims.test(static_cast<size_t>(*tok_end))) + unsigned char *tok_end = tok_start; + while (*tok_end != '\0' && !delims.test(*tok_end)) ++tok_end; if (*tok_end == '\0') { *context = nullptr; } else { *tok_end = '\0'; - *context = tok_end + 1; + *context = reinterpret_cast<char *>(tok_end + 1); } - return tok_start; + return reinterpret_cast<char *>(tok_start); } LIBC_INLINE size_t strlcpy(char *__restrict dst, const char *__restrict src, |
