Commit 71c4077c35

Jacob Young <jacobly0@users.noreply.github.com>
2023-05-31 07:25:02
Value: fix null test for c pointers
1 parent 26fac15
Changed files (1)
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,