diff options
author | nigredo-tori <nigredo.tori@gmail.com> | 2016-05-20 12:17:57 +0600 |
---|---|---|
committer | Dmitry Polienko <dmitry@eldis.ru> | 2016-05-20 12:35:34 +0600 |
commit | 85c41a1398b35c7a0dc1e8d0b0bbcede1f5c3862 (patch) | |
tree | 11811abd3eec4396a8609c8ff95ae54d54030c33 | |
parent | 268f25225abab72e197274c31ebfee7ab6dbe0d4 (diff) | |
download | Nim-85c41a1398b35c7a0dc1e8d0b0bbcede1f5c3862.tar.gz |
Fix toJSStr for control characters
fixes #4190 Add leading zero to encoded character if it is less than 0x10
-rw-r--r-- | lib/system/jssys.nim | 6 | ||||
-rw-r--r-- | tests/js/testtojsstr.nim | 6 |
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/system/jssys.nim b/lib/system/jssys.nim index 99997efe6..ce67373bc 100644 --- a/lib/system/jssys.nim +++ b/lib/system/jssys.nim @@ -248,8 +248,12 @@ proc toJSStr(s: string): cstring {.asmNoStackFrame, compilerproc.} = for (var i = 0; i < len; ++i) { if (nonAsciiPart !== null) { var offset = (i - nonAsciiOffset) * 2; + var code = `s`[i].toString(16); + if (code.length == 1) { + code = "0"+code; + } nonAsciiPart[offset] = "%"; - nonAsciiPart[offset + 1] = `s`[i].toString(16); + nonAsciiPart[offset + 1] = code; } else if (`s`[i] < 128) asciiPart[i] = fcc(`s`[i]); diff --git a/tests/js/testtojsstr.nim b/tests/js/testtojsstr.nim new file mode 100644 index 000000000..c73b80254 --- /dev/null +++ b/tests/js/testtojsstr.nim @@ -0,0 +1,6 @@ +discard """ + output = "" +""" + +let s: string = "И\n" +let cs = s.cstring |