summaryrefslogtreecommitdiff
path: root/libc/src/string
diff options
context:
space:
mode:
authorenh-google <enh@google.com>2025-09-03 14:00:38 -0400
committerGitHub <noreply@github.com>2025-09-03 14:00:38 -0400
commitded5f433dedf4a3419548929ac3dfa826e11d2e1 (patch)
tree0dc9566fe444ed21d135a438cd979f94a29c3605 /libc/src/string
parent878fa7b2686a8776d1f36a5bb516c95a07838825 (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.h14
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,