aboutsummaryrefslogtreecommitdiff
path: root/src/Compilation.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2024-05-03 10:50:39 -0400
committerAndrew Kelley <andrew@ziglang.org>2024-05-03 13:27:04 -0700
commit3b5be9fb6e06f6494ca05fb087a2121e220beb3f (patch)
tree37b4167d03236dec927ff2cb2efab35ac1e592fd /src/Compilation.zig
parent44db92d1ca90c9cfdfb29fe46f04ff8f11c80901 (diff)
downloadzig-3b5be9fb6e06f6494ca05fb087a2121e220beb3f.tar.gz
zig-3b5be9fb6e06f6494ca05fb087a2121e220beb3f.zip
lld: use a response file on `NameTooLong`
Diffstat (limited to 'src/Compilation.zig')
-rw-r--r--src/Compilation.zig10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig
index 0a6c0e2e4d..e592046850 100644
--- a/src/Compilation.zig
+++ b/src/Compilation.zig
@@ -5091,7 +5091,7 @@ fn spawnZigRc(
}
}
-pub fn tmpFilePath(comp: *Compilation, ally: Allocator, suffix: []const u8) error{OutOfMemory}![]const u8 {
+pub fn tmpFilePath(comp: Compilation, ally: Allocator, suffix: []const u8) error{OutOfMemory}![]const u8 {
const s = std.fs.path.sep_str;
const rand_int = std.crypto.random.int(u64);
if (comp.local_cache_directory.path) |p| {
@@ -5894,14 +5894,16 @@ pub fn lockAndSetMiscFailure(
return setMiscFailure(comp, tag, format, args);
}
-fn parseLldStderr(comp: *Compilation, comptime prefix: []const u8, stderr: []const u8) Allocator.Error!void {
+fn parseLldStderr(comp: *Compilation, prefix: []const u8, stderr: []const u8) Allocator.Error!void {
var context_lines = std.ArrayList([]const u8).init(comp.gpa);
defer context_lines.deinit();
var current_err: ?*LldError = null;
var lines = mem.splitSequence(u8, stderr, if (builtin.os.tag == .windows) "\r\n" else "\n");
while (lines.next()) |line| {
- if (mem.startsWith(u8, line, prefix ++ ":")) {
+ if (line.len > prefix.len + ":".len and
+ mem.eql(u8, line[0..prefix.len], prefix) and line[prefix.len] == ':')
+ {
if (current_err) |err| {
err.context_lines = try context_lines.toOwnedSlice();
}
@@ -5933,7 +5935,7 @@ fn parseLldStderr(comp: *Compilation, comptime prefix: []const u8, stderr: []con
}
}
-pub fn lockAndParseLldStderr(comp: *Compilation, comptime prefix: []const u8, stderr: []const u8) void {
+pub fn lockAndParseLldStderr(comp: *Compilation, prefix: []const u8, stderr: []const u8) void {
comp.mutex.lock();
defer comp.mutex.unlock();