diff options
| author | Damien Doligez <damien.doligez-inria.fr> | 2015-03-11 18:41:15 +0000 |
|---|---|---|
| committer | Damien Doligez <damien.doligez-inria.fr> | 2015-03-11 18:41:15 +0000 |
| commit | e60a2db81c19bfa391107b921841c0abec30c458 (patch) | |
| tree | 4dbd97cf7e30527c848a365c1fb6dd3bf4c63f71 /stdlib/bytes.ml | |
| parent | 654521cbd41e93676375919fa35dfec0ea2647e0 (diff) | |
| download | ocaml-e60a2db81c19bfa391107b921841c0abec30c458.tar.gz | |
PR#6521: {Bytes,Char,String}.escaped are locale-dependent
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@15901 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'stdlib/bytes.ml')
| -rw-r--r-- | stdlib/bytes.ml | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/stdlib/bytes.ml b/stdlib/bytes.ml index 193c3ceea1..32d4468c34 100644 --- a/stdlib/bytes.ml +++ b/stdlib/bytes.ml @@ -122,7 +122,6 @@ let cat s1 s2 = r ;; -external is_printable: char -> bool = "caml_is_printable" external char_code: char -> int = "%identity" external char_chr: int -> char = "%identity" @@ -151,7 +150,8 @@ let escaped s = n := !n + (match unsafe_get s i with | '"' | '\\' | '\n' | '\t' | '\r' | '\b' -> 2 - | c -> if is_printable c then 1 else 4) + | ' ' .. '~' -> 1 + | _ -> 4) done; if !n = length s then copy s else begin let s' = create !n in @@ -168,19 +168,16 @@ let escaped s = unsafe_set s' !n '\\'; incr n; unsafe_set s' !n 'r' | '\b' -> unsafe_set s' !n '\\'; incr n; unsafe_set s' !n 'b' + | (' ' .. '~') as c -> unsafe_set s' !n c | c -> - if is_printable c then - unsafe_set s' !n c - else begin - let a = char_code c in - unsafe_set s' !n '\\'; - incr n; - unsafe_set s' !n (char_chr (48 + a / 100)); - incr n; - unsafe_set s' !n (char_chr (48 + (a / 10) mod 10)); - incr n; - unsafe_set s' !n (char_chr (48 + a mod 10)) - end + let a = char_code c in + unsafe_set s' !n '\\'; + incr n; + unsafe_set s' !n (char_chr (48 + a / 100)); + incr n; + unsafe_set s' !n (char_chr (48 + (a / 10) mod 10)); + incr n; + unsafe_set s' !n (char_chr (48 + a mod 10)); end; incr n done; |
