From 9cb3f3386e24d52d1c6a5949278ab613ba2624e3 Mon Sep 17 00:00:00 2001 From: Ciro Spaciari Date: Tue, 1 Aug 2023 23:04:05 -0300 Subject: Fix expanding on .env files (#3918) * fix expanding * refactor locks * bound checks * fix comment * one more test * oops --- src/env_loader.zig | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/env_loader.zig b/src/env_loader.zig index bf1bf450e..088ec2d0c 100644 --- a/src/env_loader.zig +++ b/src/env_loader.zig @@ -624,6 +624,7 @@ const Parser = struct { fn parseQuoted(this: *Parser, comptime quote: u8) ?string { if (comptime Environment.allow_assert) std.debug.assert(this.src[this.pos] == quote); const start = this.pos; + const max_len = value_buffer.len; var end = start + 1; while (end < this.src.len) : (end += 1) { switch (this.src[end]) { @@ -639,7 +640,7 @@ const Parser = struct { { var ptr: usize = 0; var i = start; - while (i < end) { + while (i < end and ptr < max_len) { switch (this.src[i]) { '\\' => if (comptime quote == '"') { if (comptime Environment.allow_assert) std.debug.assert(i + 1 < end); @@ -647,16 +648,18 @@ const Parser = struct { 'n' => { value_buffer[ptr] = '\n'; ptr += 1; - i += 1; + i += 2; }, 'r' => { value_buffer[ptr] = '\r'; ptr += 1; - i += 1; + i += 2; }, else => { - value_buffer[ptr] = this.src[i]; - value_buffer[ptr + 1] = this.src[i + 1]; + if (ptr + 1 < max_len) { + value_buffer[ptr] = this.src[i]; + value_buffer[ptr + 1] = this.src[i + 1]; + } ptr += 2; i += 2; }, -- cgit v1.2.3