Commit 914993123c

Robin Voetter <robin@voetter.nl>
2021-10-26 02:28:02
stage2: return proper pointer for c pointer orelse
1 parent df198ea
Changed files (1)
src/Sema.zig
@@ -4666,7 +4666,16 @@ fn zirOptionalPayload(
             if (operand_ty.ptrSize() != .C) {
                 return sema.failWithExpectedOptionalType(block, src, operand_ty);
             }
-            break :t operand_ty;
+            const ptr_info = operand_ty.ptrInfo().data;
+            break :t try Type.ptr(sema.arena, .{
+                .pointee_type = try ptr_info.pointee_type.copy(sema.arena),
+                .@"align" = ptr_info.@"align",
+                .@"addrspace" = ptr_info.@"addrspace",
+                .mutable = ptr_info.mutable,
+                .@"allowzero" = ptr_info.@"allowzero",
+                .@"volatile" = ptr_info.@"volatile",
+                .size = .One,
+            });
         },
         else => return sema.failWithExpectedOptionalType(block, src, operand_ty),
     };