summaryrefslogtreecommitdiff
path: root/libc/src/string
diff options
context:
space:
mode:
authorVinay Deshmukh <32487576+vinay-deshmukh@users.noreply.github.com>2025-03-04 10:24:35 -0500
committerGitHub <noreply@github.com>2025-03-04 10:24:35 -0500
commit1e6e845d49a336e9da7ca6c576ec45c0b419b5f6 (patch)
tree9254ff775ceaf0aa7055ea9171f3571af12a0a3b /libc/src/string
parent4c4fd6b03149348cf11af245ad2603d24144a9d5 (diff)
[libc] Enable -Wconversion for tests. (#127523)
Relates to: #119281
Diffstat (limited to 'libc/src/string')
-rw-r--r--libc/src/string/memory_utils/utils.h4
-rw-r--r--libc/src/string/string_utils.h14
2 files changed, 10 insertions, 8 deletions
diff --git a/libc/src/string/memory_utils/utils.h b/libc/src/string/memory_utils/utils.h
index 5c9bc72208f8..508a70794211 100644
--- a/libc/src/string/memory_utils/utils.h
+++ b/libc/src/string/memory_utils/utils.h
@@ -263,7 +263,7 @@ LIBC_INLINE void store_aligned(ValueType value, Ptr dst) {
static_assert(sizeof(ValueType) >= (sizeof(T) + ... + sizeof(TS)));
constexpr size_t SHIFT = sizeof(T) * 8;
if constexpr (Endian::IS_LITTLE) {
- store<T>(assume_aligned<sizeof(T)>(dst), value & ~T(0));
+ store<T>(assume_aligned<sizeof(T)>(dst), T(value & T(~0)));
if constexpr (sizeof...(TS) > 0)
store_aligned<ValueType, TS...>(value >> SHIFT, dst + sizeof(T));
} else if constexpr (Endian::IS_BIG) {
@@ -293,7 +293,7 @@ LIBC_INLINE void store64_aligned(uint64_t value, Ptr dst, size_t offset) {
// Advances the pointers p1 and p2 by offset bytes and decrease count by the
// same amount.
template <typename T1, typename T2>
-LIBC_INLINE void adjust(ptrdiff_t offset, T1 *__restrict &p1,
+LIBC_INLINE void adjust(uintptr_t offset, T1 *__restrict &p1,
T2 *__restrict &p2, size_t &count) {
p1 += offset;
p2 += offset;
diff --git a/libc/src/string/string_utils.h b/libc/src/string/string_utils.h
index 583d35014d39..e4659f65c93e 100644
--- a/libc/src/string/string_utils.h
+++ b/libc/src/string/string_utils.h
@@ -66,7 +66,7 @@ LIBC_INLINE size_t string_length_wide_read(const char *src) {
for (; reinterpret_cast<uintptr_t>(char_ptr) % sizeof(Word) != 0;
++char_ptr) {
if (*char_ptr == '\0')
- return char_ptr - src;
+ return static_cast<size_t>(char_ptr - src);
}
// Step 2: read blocks
for (const Word *block_ptr = reinterpret_cast<const Word *>(char_ptr);
@@ -77,7 +77,7 @@ LIBC_INLINE size_t string_length_wide_read(const char *src) {
for (; *char_ptr != '\0'; ++char_ptr) {
;
}
- return char_ptr - src;
+ return static_cast<size_t>(char_ptr - src);
}
// Returns the length of a string, denoted by the first occurrence
@@ -169,7 +169,7 @@ LIBC_INLINE size_t complementary_span(const char *src, const char *segment) {
for (; *src && !bitset.test(*reinterpret_cast<const unsigned char *>(src));
++src)
;
- return src - initial;
+ return static_cast<size_t>(src - initial);
}
// Given the similarities between strtok and strtok_r, we can implement both
@@ -189,12 +189,14 @@ LIBC_INLINE char *string_token(char *__restrict src,
if (LIBC_UNLIKELY(src == nullptr && ((src = *saveptr) == nullptr)))
return nullptr;
+ static_assert(sizeof(char) == sizeof(cpp::byte),
+ "bitset of 256 assumes char is 8 bits");
cpp::bitset<256> delimiter_set;
for (; *delimiter_string != '\0'; ++delimiter_string)
- delimiter_set.set(*delimiter_string);
+ delimiter_set.set(static_cast<size_t>(*delimiter_string));
if constexpr (SkipDelim)
- for (; *src != '\0' && delimiter_set.test(*src); ++src)
+ for (; *src != '\0' && delimiter_set.test(static_cast<size_t>(*src)); ++src)
;
if (*src == '\0') {
*saveptr = src;
@@ -202,7 +204,7 @@ LIBC_INLINE char *string_token(char *__restrict src,
}
char *token = src;
for (; *src != '\0'; ++src) {
- if (delimiter_set.test(*src)) {
+ if (delimiter_set.test(static_cast<size_t>(*src))) {
*src = '\0';
++src;
break;