authorgravatar for public@enkore.deMarian Beermann <public@enkore.de> 2021-12-31 18:33:43+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-01-12 11:51:10-07:00
log47e3deeeaad253a371dc5fb531a8b1d21d3892d6
treebfff5195dc77aced7be1f53ca8ccef9e314291ea
parentc4b4192d2089882c97e675b9ecc5535cb5a42539

stage1: fix @errorName null termination


2 files changed, 12 insertions(+), 1 deletions(-)

src/stage1/codegen.cpp+1-1
...@@ -8193,7 +8193,7 @@ static void generate_error_name_table(CodeGen *g) {...@@ -8193,7 +8193,7 @@ static void generate_error_name_table(CodeGen *g) {
81938193
8194 g->largest_err_name_len = max(g->largest_err_name_len, buf_len(name));8194 g->largest_err_name_len = max(g->largest_err_name_len, buf_len(name));
81958195
8196 LLVMValueRef str_init = LLVMConstString(buf_ptr(name), (unsigned)buf_len(name), true);8196 LLVMValueRef str_init = LLVMConstString(buf_ptr(name), (unsigned)buf_len(name), false);
8197 LLVMValueRef str_global = LLVMAddGlobal(g->module, LLVMTypeOf(str_init), "");8197 LLVMValueRef str_global = LLVMAddGlobal(g->module, LLVMTypeOf(str_init), "");
8198 LLVMSetInitializer(str_global, str_init);8198 LLVMSetInitializer(str_global, str_init);
8199 LLVMSetLinkage(str_global, LLVMPrivateLinkage);8199 LLVMSetLinkage(str_global, LLVMPrivateLinkage);
test/behavior/error_stage1.zig+11
...@@ -14,6 +14,17 @@ test "@errorName" {...@@ -14,6 +14,17 @@ test "@errorName" {
14 try expect(mem.eql(u8, @errorName(gimmeItBroke()), "ItBroke"));14 try expect(mem.eql(u8, @errorName(gimmeItBroke()), "ItBroke"));
15}15}
1616
17test "@errorName sentinel length matches slice length" {
18 const name = testBuiltinErrorName(error.FooBar);
19 const length: usize = 6;
20 try expectEqual(length, std.mem.indexOfSentinel(u8, 0, name.ptr));
21 try expectEqual(length, name.len);
22}
23
24pub fn testBuiltinErrorName(err: anyerror) [:0]const u8 {
25 return @errorName(err);
26}
27
17test "error union type " {28test "error union type " {
18 try testErrorUnionType();29 try testErrorUnionType();
19 comptime try testErrorUnionType();30 comptime try testErrorUnionType();