diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/display/client.nim | 9 | ||||
-rw-r--r-- | src/js/javascript.nim | 4 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/display/client.nim b/src/display/client.nim index 49dae2ea..869435ce 100644 --- a/src/display/client.nim +++ b/src/display/client.nim @@ -59,7 +59,7 @@ type pager {.jsget.}: Pager line {.jsget.}: LineEdit config {.jsget.}: Config - store {.jsget, jsset.}: URL + store {.jsget, jsset.}: Document jsrt: JSRuntime jsctx: JSContext fdmap: Table[int, Container] @@ -150,6 +150,13 @@ proc quit(client: Client, code = 0) {.jsfunc.} = if client.alive: client.alive = false client.pager.quit() + let ctx = client.jsctx + var global = JS_GetGlobalObject(ctx) + JS_FreeValue(ctx, global) + if client.jsctx != nil: + free(client.jsctx) + if client.jsrt != nil: + free(client.jsrt) quit(code) proc feedNext(client: Client) {.jsfunc.} = diff --git a/src/js/javascript.nim b/src/js/javascript.nim index e8c36e34..38754d78 100644 --- a/src/js/javascript.nim +++ b/src/js/javascript.nim @@ -89,7 +89,7 @@ type JSContextOpaque* = ref object creg: Table[string, JSClassID] typemap: Table[pointer, JSClassID] - ctors: Table[JSClassID, JSValue] #TODO TODO TODO free these + ctors: Table[JSClassID, JSValue] gclaz: string sym_refs: array[JSSymbolRefs, JSAtom] str_refs: array[JSStrRefs, JSAtom] @@ -196,6 +196,8 @@ proc free*(ctx: var JSContext) = JS_FreeAtom(ctx, a) for a in opaque.str_refs: JS_FreeAtom(ctx, a) + for classid, v in opaque.ctors: + JS_FreeValue(ctx, v) JS_FreeValue(ctx, opaque.Array_prototype_values) for v in opaque.err_ctors: JS_FreeValue(ctx, v) |