summary refs log blame commit diff stats
path: root/tests/gc/growobjcrash.nim
blob: a16468c7e81cdce3d7f9fff6ddb65947ac900d19 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16















                                                   
                                                                                 











                                                           
discard """
  output: "works"
"""

import cgi, strtabs

proc handleRequest(query: string): StringTableRef =
  iterator foo(): StringTableRef {.closure.} =
    var params = {:}.newStringTable()
    for key, val in cgi.decodeData(query):
      params[key] = val
    yield params

  let x = foo
  result = x()

const Limit = when compileOption("gc", "markAndSweep"): 5*1024*1024 else: 700_000

proc main =
  var counter = 0
  for i in 0 .. 100_000:
    for k, v in handleRequest("nick=Elina2&type=activate"):
      inc counter
      if counter mod 100 == 0:
        if getOccupiedMem() > Limit:
          quit "but now a leak"

main()
echo "works"