summaryrefslogtreecommitdiff
path: root/content/handlers/javascript
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2019-05-05 18:51:41 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2019-05-05 18:51:41 +0100
commit3ba50e85747d31deaa2c4c17950b46fc50019564 (patch)
tree2e8d5b7dde06ad92ac62016ce97afdf3fd6e19a2 /content/handlers/javascript
parentac512958ffb8382b7d7c76748dc69c7ea49baf70 (diff)
downloadnetsurf-3ba50e85747d31deaa2c4c17950b46fc50019564.tar.gz
netsurf-3ba50e85747d31deaa2c4c17950b46fc50019564.tar.bz2
Force a GC to ensure old compartment goes away
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
Diffstat (limited to 'content/handlers/javascript')
-rw-r--r--content/handlers/javascript/duktape/dukky.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/content/handlers/javascript/duktape/dukky.c b/content/handlers/javascript/duktape/dukky.c
index 2755a272f..8af3165b6 100644
--- a/content/handlers/javascript/duktape/dukky.c
+++ b/content/handlers/javascript/duktape/dukky.c
@@ -611,7 +611,11 @@ jsobject *js_newcompartment(jscontext *ctx, void *win_priv, void *doc_priv)
NSLOG(dukky, DEBUG,
"New javascript/duktape compartment, win_priv=%p, doc_priv=%p", win_priv,
doc_priv);
- duk_set_top(ctx->ctx, 0);
+ if (CTX != NULL) {
+ duk_set_top(ctx->ctx, 0);
+ duk_gc(ctx->ctx, 0);
+ duk_gc(ctx->ctx, DUK_GC_COMPACT);
+ }
duk_push_thread(ctx->ctx);
ctx->thread = duk_require_context(ctx->ctx, -1);
duk_push_int(CTX, 0);