Browse Source

Check for non-zero sized elements for `intrinsics.ptr_sub`

gingerBill 2 years ago
parent
commit
3d0e194298
1 changed files with 7 additions and 0 deletions
  1. 7 0
      src/check_builtin.cpp

+ 7 - 0
src/check_builtin.cpp

@@ -4182,6 +4182,13 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32
 				return false;
 			}
 
+			Type *elem = type_deref(ptr0.type);
+			if (type_size_of(elem) == 0) {
+				gbString str = type_to_string(ptr0.type);
+				error(ptr0.expr, "Expected a pointer to a non-zero sized element for '%.*s', got %s", LIT(builtin_name), str);
+				gb_string_free(str);
+				return false
+			}
 		}
 		break;