瀏覽代碼

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

gingerBill 2 年之前
父節點
當前提交
3d0e194298
共有 1 個文件被更改,包括 7 次插入0 次删除
  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;