diff options
author | Araq <rumpf_a@web.de> | 2015-09-16 11:36:49 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-09-16 11:36:49 +0200 |
commit | c9a2fa54c7055c16892e9664dd64d8fc68918c07 (patch) | |
tree | b67fca3d93765f677de696f4f8b1ed50b031b164 /lib/pure/json.nim | |
parent | 1251fc76c32bdd50a3b9540e0cd80b0c435051ce (diff) | |
parent | d24eaf084b4be17e43f262d4127a91993ae6f7cd (diff) | |
download | Nim-c9a2fa54c7055c16892e9664dd64d8fc68918c07.tar.gz |
Merge branch 'devel' into fix_bracket_expr
Diffstat (limited to 'lib/pure/json.nim')
-rw-r--r-- | lib/pure/json.nim | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/pure/json.nim b/lib/pure/json.nim index 540a1a8eb..abf6305f2 100644 --- a/lib/pure/json.nim +++ b/lib/pure/json.nim @@ -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) |