authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-06-06 11:13:36-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-06-06 11:13:36-07:00
log8f7fc63847fd2c2334a13e5dce564942146120c7
tree6a3cec32ca9aec31c8a0d4c986dc63d6bd7e2856
parent3c151f0b1c560167326aa73ebbb7923dd810ee95

Package.Hash.toSlice: consistent pointer

Makes the returned pointer always point inside `Hash.bytes` even when it is length zero.

1 files changed, 3 insertions(+), 3 deletions(-)

src/Package.zig+3-3
...@@ -66,11 +66,11 @@ pub const Hash = struct {...@@ -66,11 +66,11 @@ pub const Hash = struct {
6666
67 pub fn toSlice(ph: *const Hash) []const u8 {67 pub fn toSlice(ph: *const Hash) []const u8 {
68 var end: usize = ph.bytes.len;68 var end: usize = ph.bytes.len;
69 while (true) {69 while (end > 0) {
70 if (end == 0) return &.{};
71 end -= 1;70 end -= 1;
72 if (ph.bytes[end] != 0) return ph.bytes[0 .. end + 1];71 if (ph.bytes[end] != 0) return ph.bytes[0 .. end + 1];
73 }72 }
73 return ph.bytes[0..0];
74 }74 }
7575
76 pub fn eql(a: *const Hash, b: *const Hash) bool {76 pub fn eql(a: *const Hash, b: *const Hash) bool {
...@@ -196,7 +196,7 @@ test Hash {...@@ -196,7 +196,7 @@ test Hash {
196 try std.testing.expectEqualStrings("nasm-2.16.1-3-vrr-ygAAoADH9XG3tOdvPNuHen_d-XeHndOG-nNXmved", result.toSlice());196 try std.testing.expectEqualStrings("nasm-2.16.1-3-vrr-ygAAoADH9XG3tOdvPNuHen_d-XeHndOG-nNXmved", result.toSlice());
197}197}
198198
199test "EmptyHash" {199test "empty hash" {
200 const hash = Hash.fromSlice("");200 const hash = Hash.fromSlice("");
201 try std.testing.expectEqualStrings("", hash.toSlice());201 try std.testing.expectEqualStrings("", hash.toSlice());
202}202}