瀏覽代碼

fixed enumEq with dynamic parameters (close #61)

Nicolas Cannasse 8 年之前
父節點
當前提交
1a099ba0bc
共有 1 個文件被更改,包括 11 次插入2 次删除
  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;
 		}
 	}