summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorRoger Shi <rogershijicheng@gmail.com>2015-09-10 15:16:01 +0800
committerRoger Shi <rogershijicheng@gmail.com>2015-09-10 15:16:01 +0800
commit16fe63180f7192af5218df83878c89a6a5c554cd (patch)
treed4fe7ffb4f62f6276420f8f14b043834f2d08bc0
parent58e1068f739a2115fe83db9bd6af34501eff1af4 (diff)
downloadNim-16fe63180f7192af5218df83878c89a6a5c554cd.tar.gz
test case for #2367
-rw-r--r--lib/pure/json.nim11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/pure/json.nim b/lib/pure/json.nim
index d98ed1042..abf6305f2 100644
--- a/lib/pure/json.nim
+++ b/lib/pure/json.nim
@@ -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)