Adjust UTF-16 parsing

This commit is contained in:
Emery Hemingway 2023-12-24 21:08:48 +02:00
parent 44f98163d9
commit e43371da87
1 changed files with 11 additions and 3 deletions

View File

@ -38,11 +38,19 @@ template unescape*(buf: var string; capture: string) =
of 't': add(buf, char 0x09)
of '"': add(buf, char 0x22)
of 'u':
var r: int32
var
long: uint32
short: uint16
inc(i)
discard parseHex(capture, r, i, 4)
discard parseHex(capture, short, i, 4)
inc(i, 3)
add(buf, Rune r)
long = uint32(short)
if capture[i] == 'u':
inc(i)
discard parseHex(capture, short, i, 4)
inc(i, 3)
long = (long shl 16) or uint32(short)
add(buf, long.Rune.toUtf8)
else:
validate(false)
else: