diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2024-03-20 17:26:31 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2024-03-20 17:26:31 -0700 |
| commit | 7741aca96c8cc6df7e8c4bd10ada741d6a3ffb9d (patch) | |
| tree | bb7989b7e6f64ae30ad211c10a62ac250b092672 /lib/std/json/static.zig | |
| parent | 2583b389eaf5f7aaa0eb79b51126506c1e172d15 (diff) | |
| download | zig-7741aca96c8cc6df7e8c4bd10ada741d6a3ffb9d.tar.gz zig-7741aca96c8cc6df7e8c4bd10ada741d6a3ffb9d.zip | |
std: work around compiler unable to evaluate condition at compile time
Diffstat (limited to 'lib/std/json/static.zig')
| -rw-r--r-- | lib/std/json/static.zig | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/lib/std/json/static.zig b/lib/std/json/static.zig index ea0bb6c0f2..312fa1a119 100644 --- a/lib/std/json/static.zig +++ b/lib/std/json/static.zig @@ -400,24 +400,20 @@ pub fn innerParse( @memcpy(r[i..][0..slice.len], slice); i += slice.len; }, - .partial_string_escaped_1 => |arr| { + inline .partial_string_escaped_1, + .partial_string_escaped_2, + .partial_string_escaped_3, + .partial_string_escaped_4, + => |arr| { if (i + arr.len > r.len) return error.LengthMismatch; - @memcpy(r[i..][0..arr.len], arr[0..]); - i += arr.len; - }, - .partial_string_escaped_2 => |arr| { - if (i + arr.len > r.len) return error.LengthMismatch; - @memcpy(r[i..][0..arr.len], arr[0..]); - i += arr.len; - }, - .partial_string_escaped_3 => |arr| { - if (i + arr.len > r.len) return error.LengthMismatch; - @memcpy(r[i..][0..arr.len], arr[0..]); - i += arr.len; - }, - .partial_string_escaped_4 => |arr| { - if (i + arr.len > r.len) return error.LengthMismatch; - @memcpy(r[i..][0..arr.len], arr[0..]); + + // Implementing https://github.com/ziglang/zig/issues/3806 + // would make this no longer needed because the + // above condition would become compile-time + // known. + if (arr.len > r.len) unreachable; + + @memcpy(r[i..][0..arr.len], &arr); i += arr.len; }, else => unreachable, |
