summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlain Frisch <alain@frisch.fr>2014-09-24 09:24:36 +0000
committerAlain Frisch <alain@frisch.fr>2014-09-24 09:24:36 +0000
commitf8ca8db7bba2d10291550cacc4047fb11f438d89 (patch)
tree61606221b1156476ac9699e95bf46e57d7ad3af4
parent45e9ebde3c75acfb2f83cba1e14dac48e1a6d9d1 (diff)
downloadocaml-f8ca8db7bba2d10291550cacc4047fb11f438d89.tar.gz
#6577: fix performance of %S format.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@15320 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--stdlib/camlinternalFormat.ml6
1 files changed, 5 insertions, 1 deletions
diff --git a/stdlib/camlinternalFormat.ml b/stdlib/camlinternalFormat.ml
index 109ca92958..d3bb7a780e 100644
--- a/stdlib/camlinternalFormat.ml
+++ b/stdlib/camlinternalFormat.ml
@@ -1266,7 +1266,11 @@ let fix_int_precision prec str =
(* Escape a string according to the OCaml lexing convention. *)
let string_to_caml_string str =
- String.concat (String.escaped str) ["\""; "\""]
+ let str = String.escaped str in
+ let l = String.length str in
+ let res = Bytes.make (l + 2) '\"' in
+ String.unsafe_blit str 0 res 1 l;
+ Bytes.unsafe_to_string res
(* Generate the format_int/int32/nativeint/int64 first argument
from an int_conv. *)