From 475ce90e9b52b145f26e1e2e8828e5fc7aacca67 Mon Sep 17 00:00:00 2001 From: Roman Venediktov Date: Thu, 11 Jul 2024 14:57:30 +0200 Subject: [PATCH] Fix escaping --- src/X86_64.ml | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/X86_64.ml b/src/X86_64.ml index dd1a9a66b..33a7dfb1a 100644 --- a/src/X86_64.ml +++ b/src/X86_64.ml @@ -1284,13 +1284,33 @@ class env prg mode = let n = String.length x in let buf = Buffer.create (n * 2) in let rec iterate i = - if i < n then ( - (match x.[i] with + if i < n then + match x.[i] with | '"' -> Buffer.add_char buf '\\'; - Buffer.add_char buf '"' - | c -> Buffer.add_char buf c); - iterate (i + 1)) + Buffer.add_char buf '"'; + iterate (i + 1) + | '\\' -> ( + if i + 1 >= n then ( + Buffer.add_char buf '\\'; + Buffer.add_char buf '\\') + else + match x.[i + 1] with + | 'n' -> + Buffer.add_char buf '\\'; + Buffer.add_char buf 'n'; + iterate (i + 2) + | 't' -> + Buffer.add_char buf '\\'; + Buffer.add_char buf 't'; + iterate (i + 2) + | _ -> + Buffer.add_char buf '\\'; + Buffer.add_char buf '\\'; + iterate (i + 1)) + | c -> + Buffer.add_char buf c; + iterate (i + 1) in iterate 0; Buffer.contents buf