parent
c86f9590fb
commit
6dc34757b6
2 changed files with 28 additions and 4 deletions
26
tests/arc/tunref_cycle.nim
Normal file
26
tests/arc/tunref_cycle.nim
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
discard """
|
||||
outputsub: '''inside closure
|
||||
hello world'''
|
||||
cmd: "nim c --gc:orc -d:useMalloc $file"
|
||||
valgrind: true
|
||||
"""
|
||||
|
||||
# bug #18579
|
||||
|
||||
var fp: proc (env: pointer) {.cdecl.}
|
||||
var env: pointer
|
||||
|
||||
proc store(f: proc (){.closure.}) =
|
||||
proc closeOver() =
|
||||
echo "inside closure"
|
||||
f()
|
||||
(fp,env) = (cast[proc(env: pointer){.cdecl.}](rawProc closeOver), rawEnv closeOver)
|
||||
GC_ref(cast[RootRef](env))
|
||||
|
||||
proc run() =
|
||||
fp(env)
|
||||
GC_unref(cast[RootRef](env))
|
||||
|
||||
store(proc() = echo "hello world")
|
||||
run()
|
||||
GC_fullCollect()
|
||||
Loading…
Add table
Add a link
Reference in a new issue