summaryrefslogtreecommitdiff
path: root/libc/src/string
diff options
context:
space:
mode:
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, 8 insertions, 10 deletions
diff --git a/libc/src/string/memory_utils/utils.h b/libc/src/string/memory_utils/utils.h
index 508a70794211..5c9bc72208f8 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), T(value & T(~0)));
+ store<T>(assume_aligned<sizeof(T)>(dst), 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(uintptr_t offset, T1 *__restrict &p1,
+LIBC_INLINE void adjust(ptrdiff_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 e4659f65c93e..583d35014d39 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 static_cast<size_t>(char_ptr - src);
+ return 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 static_cast<size_t>(char_ptr - src);
+ return 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 static_cast<size_t>(src - initial);
+ return src - initial;
}
// Given the similarities between strtok and strtok_r, we can implement both
@@ -189,14 +189,12 @@ 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(static_cast<size_t>(*delimiter_string));
+ delimiter_set.set(*delimiter_string);
if constexpr (SkipDelim)
- for (; *src != '\0' && delimiter_set.test(static_cast<size_t>(*src)); ++src)
+ for (; *src != '\0' && delimiter_set.test(*src); ++src)
;
if (*src == '\0') {
*saveptr = src;
@@ -204,7 +202,7 @@ LIBC_INLINE char *string_token(char *__restrict src,
}
char *token = src;
for (; *src != '\0'; ++src) {
- if (delimiter_set.test(static_cast<size_t>(*src))) {
+ if (delimiter_set.test(*src)) {
*src = '\0';
++src;
break;