summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--absl/strings/cord.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/absl/strings/cord.h b/absl/strings/cord.h
index d7e5a45e..88e1c85d 100644
--- a/absl/strings/cord.h
+++ b/absl/strings/cord.h
@@ -1013,17 +1013,17 @@ namespace cord_internal {
// Fast implementation of memmove for up to 15 bytes. This implementation is
// safe for overlapping regions. If nullify_tail is true, the destination is
-// padded with '\0' up to 16 bytes.
+// padded with '\0' up to 15 bytes.
template <bool nullify_tail = false>
inline void SmallMemmove(char* dst, const char* src, size_t n) {
if (n >= 8) {
- assert(n <= 16);
+ assert(n <= 15);
uint64_t buf1;
uint64_t buf2;
memcpy(&buf1, src, 8);
memcpy(&buf2, src + n - 8, 8);
if (nullify_tail) {
- memset(dst + 8, 0, 8);
+ memset(dst + 7, 0, 8);
}
memcpy(dst, &buf1, 8);
memcpy(dst + n - 8, &buf2, 8);
@@ -1034,7 +1034,7 @@ inline void SmallMemmove(char* dst, const char* src, size_t n) {
memcpy(&buf2, src + n - 4, 4);
if (nullify_tail) {
memset(dst + 4, 0, 4);
- memset(dst + 8, 0, 8);
+ memset(dst + 7, 0, 8);
}
memcpy(dst, &buf1, 4);
memcpy(dst + n - 4, &buf2, 4);
@@ -1045,7 +1045,7 @@ inline void SmallMemmove(char* dst, const char* src, size_t n) {
dst[n - 1] = src[n - 1];
}
if (nullify_tail) {
- memset(dst + 8, 0, 8);
+ memset(dst + 7, 0, 8);
memset(dst + n, 0, 8);
}
}