aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrgreenblatt <greenblattryan@gmail.com>2021-06-26 10:35:39 -0500
committerVeikka Tuominen <git@vexu.eu>2021-08-20 19:37:53 +0300
commit2f1abd919a8465e515875cd08816778df795aabe (patch)
tree4c8e605e1792dfed207954f43ecbe0ad1445647b
parentb2e970d157343919ea2be44b3ebe4c519324bd4e (diff)
downloadzig-2f1abd919a8465e515875cd08816778df795aabe.tar.gz
zig-2f1abd919a8465e515875cd08816778df795aabe.zip
Fix issue where root.os.panic could return
-rw-r--r--lib/std/builtin.zig11
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/std/builtin.zig b/lib/std/builtin.zig
index 6643e07837..91b0adf0e4 100644
--- a/lib/std/builtin.zig
+++ b/lib/std/builtin.zig
@@ -671,7 +671,12 @@ pub const PanicFn = fn ([]const u8, ?*StackTrace) noreturn;
/// This function is used by the Zig language code generation and
/// therefore must be kept in sync with the compiler implementation.
-pub const panic: PanicFn = if (@hasDecl(root, "panic")) root.panic else default_panic;
+pub const panic: PanicFn = if (@hasDecl(root, "panic"))
+ root.panic
+else if (@hasDecl(root, "os") and @hasDecl(root.os, "panic"))
+ root.os.panic
+else
+ default_panic;
/// This function is used by the Zig language code generation and
/// therefore must be kept in sync with the compiler implementation.
@@ -684,10 +689,6 @@ pub fn default_panic(msg: []const u8, error_return_trace: ?*StackTrace) noreturn
@breakpoint();
}
}
- if (@hasDecl(root, "os") and @hasDecl(root.os, "panic")) {
- root.os.panic(msg, error_return_trace);
- unreachable;
- }
switch (os.tag) {
.freestanding => {
while (true) {