authorgravatar for motiejus@jakstys.ltMotiejus Jakštys <motiejus@jakstys.lt> 2023-03-17 15:09:26+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-03-17 15:54:09-04:00
log9f2aa3fbeec451021837ca6bca2baa47302f0468
tree0e12d0e9526606bb69f66a91bddd56d4cda39bba
parent2089b3f193beaef6debc5671ca6d1f6fc028db8d

Build.zig_exe: make it sentinel-aware

This is useful for tests that want to `execve` zig directly. The string is already null-terminated, so this will just expose it as such, removing an extra allocation from the test. Will be used in #14462

2 files changed, 4 insertions(+), 4 deletions(-)

lib/build_runner.zig+2-2
......@@ -1008,13 +1008,13 @@ fn usageAndErr(builder: *std.Build, already_ran_build: bool, out_stream: anytype
10081008 process.exit(1);
10091009}
10101010
1011fn nextArg(args: [][]const u8, idx: *usize) ?[]const u8 {
1011fn nextArg(args: [][:0]const u8, idx: *usize) ?[:0]const u8 {
10121012 if (idx.* >= args.len) return null;
10131013 defer idx.* += 1;
10141014 return args[idx.*];
10151015}
10161016
1017fn argsRest(args: [][]const u8, idx: usize) ?[][]const u8 {
1017fn argsRest(args: [][:0]const u8, idx: usize) ?[][:0]const u8 {
10181018 if (idx >= args.len) return null;
10191019 return args[idx..];
10201020}
lib/std/Build.zig+2-2
......@@ -60,7 +60,7 @@ verbose_cimport: bool,
6060verbose_llvm_cpu_features: bool,
6161reference_trace: ?u32 = null,
6262invalid_user_input: bool,
63zig_exe: []const u8,
63zig_exe: [:0]const u8,
6464default_step: *Step,
6565env_map: *EnvMap,
6666top_level_steps: std.StringArrayHashMapUnmanaged(*TopLevelStep),
......@@ -184,7 +184,7 @@ pub const DirList = struct {
184184
185185pub fn create(
186186 allocator: Allocator,
187 zig_exe: []const u8,
187 zig_exe: [:0]const u8,
188188 build_root: Cache.Directory,
189189 cache_root: Cache.Directory,
190190 global_cache_root: Cache.Directory,