Browse Source

Fix crash caused by not checking for correct SOA kind on polymorphic parameters

gingerBill 5 years ago
parent
commit
3fa4c5043a
1 changed files with 2 additions and 1 deletions
  1. 2 1
      src/check_expr.cpp

+ 2 - 1
src/check_expr.cpp

@@ -926,7 +926,8 @@ bool is_polymorphic_type_assignable(CheckerContext *c, Type *poly, Type *source,
 
 
 	case Type_Struct:
 	case Type_Struct:
 		if (source->kind == Type_Struct) {
 		if (source->kind == Type_Struct) {
-			if (poly->Struct.soa_kind == source->Struct.soa_kind) {
+			if (poly->Struct.soa_kind == source->Struct.soa_kind &&
+			    poly->Struct.soa_kind != StructSoa_None) {
 				bool ok = is_polymorphic_type_assignable(c, poly->Struct.soa_elem, source->Struct.soa_elem, true, modify_type);
 				bool ok = is_polymorphic_type_assignable(c, poly->Struct.soa_elem, source->Struct.soa_elem, true, modify_type);
 				if (ok) switch (source->Struct.soa_kind) {
 				if (ok) switch (source->Struct.soa_kind) {
 				case StructSoa_Fixed:
 				case StructSoa_Fixed: