Procházet zdrojové kódy

bugfix in dynamic comparison

Nicolas Cannasse před 9 roky
rodič
revize
3ae9a62c56
1 změnil soubory, kde provedl 2 přidání a 1 odebrání
  1. 2 1
      genhl.ml

+ 2 - 1
genhl.ml

@@ -6337,7 +6337,8 @@ let write_c version file (code:code) =
 					else
 						sexpr "if( %s && %s && %s ) goto %s" (reg a) (reg b) pcompare (label d)
 				| HDyn , _ | _, HDyn ->
-					sexpr "{ int i = hl_dyn_compare((vdynamic*)%s,(vdynamic*)%s); if( i %s 0 && i != hl_invalid_comparison ) goto %s; }" (reg a) (reg b) (s_binop op) (label d)
+					let inv = if op = OpGt || op = OpGte then "&& i != hl_invalid_comparison " else "" in
+					sexpr "{ int i = hl_dyn_compare((vdynamic*)%s,(vdynamic*)%s); if( i %s 0 %s) goto %s; }" (reg a) (reg b) (s_binop op) inv (label d)
 				| HObj oa, HObj _ ->
 					(try
 						let fid = PMap.find "__compare" oa.pfunctions in