~ chicken-core (chicken-5) c3dfc51e1e3c83a6f70fa9682a6d3e7833d9da79
commit c3dfc51e1e3c83a6f70fa9682a6d3e7833d9da79 Author: Peter Bex <peter@more-magic.net> AuthorDate: Sat Dec 5 14:43:01 2015 +0100 Commit: Evan Hanson <evhan@foldling.org> CommitDate: Mon Dec 7 21:46:33 2015 +1300 Fix "slashify" C string escaping mechanism. If you have backslashes in procedure names, they would incorrectly be converted to slashes in the call trace. The "slashify" procedure is only used in one place, and only for injecting strings to C, which means it's easy to fix. Signed-off-by: Evan Hanson <evhan@foldling.org> diff --git a/c-backend.scm b/c-backend.scm index 73747835..fffae6c6 100644 --- a/c-backend.scm +++ b/c-backend.scm @@ -236,7 +236,7 @@ (fn (car subs)) ) (when name (if emit-trace-info - (gen #t "C_trace(\"" (slashify name-str) "\");") + (gen #t "C_trace(\"" (backslashify name-str) "\");") (gen #t "/* " (uncommentify name-str) " */") ) ) (cond ((eq? '##core#proc (node-class fn)) (gen #\{) diff --git a/compiler-namespace.scm b/compiler-namespace.scm index dea9e4b0..1bbbcdf1 100644 --- a/compiler-namespace.scm +++ b/compiler-namespace.scm @@ -265,7 +265,7 @@ simplified-ops simplify-named-call simplify-type - slashify + backslashify sort-symbols source-filename source-info->string diff --git a/support.scm b/support.scm index df306814..1c487827 100644 --- a/support.scm +++ b/support.scm @@ -168,7 +168,7 @@ ((string? x) (string->symbol x)) (else (string->symbol (sprintf "~a" x))) ) ) -(define (slashify s) (string-translate (->string s) "\\" "/")) +(define (backslashify s) (string-translate (->string s) "\\" "\\\\")) (define (uncommentify s) (string-translate* (->string s) '(("*/" . "*_/"))))Trap