diff options
Diffstat (limited to 'src/Package')
| -rw-r--r-- | src/Package/Manifest.zig | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/Package/Manifest.zig b/src/Package/Manifest.zig index 1d71b60fa3..f5a4a8c314 100644 --- a/src/Package/Manifest.zig +++ b/src/Package/Manifest.zig @@ -471,10 +471,14 @@ const Parse = struct { offset: u32, ) InnerError!void { const raw_string = bytes[offset..]; - var buf_managed = buf.toManaged(p.gpa); - const result = std.zig.string_literal.parseWrite(buf_managed.writer(), raw_string); - buf.* = buf_managed.moveToUnmanaged(); - switch (try result) { + const result = r: { + var aw: std.io.Writer.Allocating = .fromArrayList(p.gpa, buf); + defer buf.* = aw.toArrayList(); + break :r std.zig.string_literal.parseWrite(&aw.writer, raw_string) catch |err| switch (err) { + error.WriteFailed => return error.OutOfMemory, + }; + }; + switch (result) { .success => {}, .failure => |err| try p.appendStrLitError(err, token, bytes, offset), } |
