From 71c4077c359096d0706a251a10eeae6c41f299ca Mon Sep 17 00:00:00 2001 From: Jacob Young Date: Wed, 31 May 2023 01:25:02 -0400 Subject: [PATCH] Value: fix null test for c pointers --- src/value.zig | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/value.zig b/src/value.zig index 62a83c7901..db37d8e9e7 100644 --- a/src/value.zig +++ b/src/value.zig @@ -2131,19 +2131,20 @@ pub const Value = struct { } /// Asserts the value is not undefined and not unreachable. - /// Integer value 0 is considered null because of C pointers. + /// C pointers with an integer value of 0 are also considered null. pub fn isNull(val: Value, mod: *Module) bool { return switch (val.toIntern()) { .undef => unreachable, .unreachable_value => unreachable, - .null_value => true, - else => return switch (mod.intern_pool.indexToKey(val.toIntern())) { .undef => unreachable, - .int => { - var buf: BigIntSpace = undefined; - return val.toBigInt(&buf, mod).eqZero(); + .ptr => |ptr| switch (ptr.addr) { + .int => { + var buf: BigIntSpace = undefined; + return val.toBigInt(&buf, mod).eqZero(); + }, + else => false, }, .opt => |opt| opt.val == .none, else => false,