Merge pull request #3307 from rogercloud/devel

Fix issue #2245
This commit is contained in:
Andreas Rumpf 2015-09-14 17:37:54 +02:00
commit fa17707684
3 changed files with 16 additions and 4 deletions

View file

@ -1074,9 +1074,9 @@ when not defined(js):
## for nice error messages.
var p: JsonParser
p.open(s, filename)
defer: p.close()
discard getTok(p) # read first token
result = p.parseJson()
p.close()
proc parseJson*(buffer: string): JsonNode =
## Parses JSON from `buffer`.
@ -1203,6 +1203,17 @@ when isMainModule:
testJson{["c", "d"]} = %true
assert(testJson["c"]["d"].bval)
# make sure no memory leek when parsing invalid string
let startMemory = getOccupiedMem()
for i in 0 .. 10000:
try:
discard parseJson"""{ invalid"""
except:
discard
# memory diff should less than 2M
assert(abs(getOccupiedMem() - startMemory) < 2 * 1024 * 1024)
# test `$`
let stringified = $testJson
let parsedAgain = parseJson(stringified)