Przeglądaj źródła

value_to_string now returns length instead of size

Nicolas Cannasse 9 lat temu
rodzic
commit
6c2e78a3e1
4 zmienionych plików z 7 dodań i 7 usunięć
  1. 2 2
      genhl.ml
  2. 1 1
      std/hl/_std/Std.hx
  3. 3 3
      std/hl/_std/StringBuf.hx
  4. 1 1
      std/hl/types/Bytes.hx

+ 2 - 2
genhl.ml

@@ -4450,7 +4450,7 @@ let interp code =
 				(function
 				| [v; VRef (regs,i,_)] ->
 					let str = caml_to_hl (vstr v HDyn) in
-					regs.(i) <- to_int (String.length str - 2);
+					regs.(i) <- to_int ((String.length str) lsr 1 - 1);
 					VBytes str
 				| _ -> assert false);
 			| "math_isnan" -> (function [VFloat f] -> VBool (classify_float f = FP_nan) | _ -> assert false)
@@ -6275,7 +6275,7 @@ let write_c version ch (code:code) =
 			(match o.pclassglobal with None -> () | Some g -> sexpr "obj$%d.global_value = &global$%d" i g);
 			sexpr "type$%d.obj = &obj$%d" i i;
 		| HNull t | HRef t ->
-			sexpr "type$%d.t = %s" i (type_value t)
+			sexpr "type$%d.tparam = %s" i (type_value t)
 		| HEnum _ ->
 			sexpr "type$%d.tenum = &enum$%d" i i;
 		| HVirtual _ ->

+ 1 - 1
std/hl/_std/Std.hx

@@ -44,7 +44,7 @@ class Std {
 	@:keep public static function string( s : Dynamic ) : String {
 		var len = 0;
 		var bytes = hl.types.Bytes.ofValue(s,new hl.types.Ref(len));
-		return @:privateAccess String.__alloc__(bytes,len>>1);
+		return @:privateAccess String.__alloc__(bytes,len);
 	}
 
 	public static function parseInt( x : String ) : Null<Int> {

+ 3 - 3
std/hl/_std/StringBuf.hx

@@ -52,9 +52,9 @@
 	}
 
 	public function add<T>( x : T ) : Void {
-		var ssize = 0;
-		var sbytes = hl.types.Bytes.ofValue(x, new hl.types.Ref(ssize));
-		__add(sbytes, 0, ssize);
+		var slen = 0;
+		var sbytes = hl.types.Bytes.ofValue(x, new hl.types.Ref(slen));
+		__add(sbytes, 0, slen<<1);
 	}
 
 	public function addSub( s : String, pos : Int, ?len : Int ) : Void @:privateAccess {

+ 1 - 1
std/hl/types/Bytes.hx

@@ -131,7 +131,7 @@ package hl.types;
 	}
 
 	@:hlNative("std","value_to_string")
-	public static function ofValue( v : Dynamic, size : Ref<Int> ) : Bytes {
+	public static function ofValue( v : Dynamic, length : Ref<Int> ) : Bytes {
 		return null;
 	}
 }