aboutsummaryrefslogtreecommitdiff
path: root/src/cache_hash.cpp
diff options
context:
space:
mode:
authordaurnimator <quae@daurnimator.com>2020-03-13 00:52:28 +1100
committerAndrew Kelley <andrew@ziglang.org>2020-04-01 10:36:38 -0400
commit7eb938c9096db54fe6e99148824252904c79c227 (patch)
tree1eaf50073504d7005ed787ac798d5f56dd20bb57 /src/cache_hash.cpp
parente535057364d33819001e55d34d104916cfab1b91 (diff)
downloadzig-7eb938c9096db54fe6e99148824252904c79c227.tar.gz
zig-7eb938c9096db54fe6e99148824252904c79c227.zip
Use length field as passed in stage2 libc_installation instead of relying on zero termination
Diffstat (limited to 'src/cache_hash.cpp')
-rw-r--r--src/cache_hash.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/cache_hash.cpp b/src/cache_hash.cpp
index 3cff34ea5c..c12d8f29ef 100644
--- a/src/cache_hash.cpp
+++ b/src/cache_hash.cpp
@@ -27,11 +27,17 @@ void cache_init(CacheHash *ch, Buf *manifest_dir) {
void cache_mem(CacheHash *ch, const char *ptr, size_t len) {
assert(ch->manifest_file_path == nullptr);
assert(ptr != nullptr);
- // + 1 to include the null byte
blake2b_update(&ch->blake, ptr, len);
}
+void cache_slice(CacheHash *ch, Slice<const char> slice) {
+ // mix the length into the hash so that two juxtaposed cached slices can't collide
+ cache_usize(ch, slice.len);
+ cache_mem(ch, slice.ptr, slice.len);
+}
+
void cache_str(CacheHash *ch, const char *ptr) {
+ // + 1 to include the null byte
cache_mem(ch, ptr, strlen(ptr) + 1);
}