فهرست منبع

bugfix in dynamic comparison

Nicolas Cannasse 9 سال پیش
والد
کامیت
3ae9a62c56
1فایلهای تغییر یافته به همراه2 افزوده شده و 1 حذف شده
  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