Browse Source

fixed enumEq with dynamic parameters (close #61)

Nicolas Cannasse 8 years ago
parent
commit
1a099ba0bc
1 changed files with 11 additions and 2 deletions
  1. 11 2
      src/std/types.c

+ 11 - 2
src/std/types.c

@@ -470,8 +470,17 @@ HL_PRIM bool hl_type_enum_eq( vdynamic *a, vdynamic *b ) {
 			}
 			break;
 		default:
-			if( hl_dyn_compare(hl_make_dyn((char*)ea + c->offsets[i],t),hl_make_dyn((char*)eb + c->offsets[i],t)) )
-				return false;
+			{
+				vdynamic *pa = hl_make_dyn((char*)ea + c->offsets[i],t);
+				vdynamic *pb = hl_make_dyn((char*)eb + c->offsets[i],t);
+				if( pa && pa->t->kind == HENUM && pb && pa->t == pb->t ) {
+					if( !hl_type_enum_eq(pa,pb) )
+						return false;
+					continue;
+				}
+				if( hl_dyn_compare(pa,pb) )
+					return false;
+			}
 			break;
 		}
 	}