mirror of
https://github.com/nodejs/node.git
synced 2025-05-05 11:29:34 +00:00

When the previous set of changes (bfff07b4
) it was possible to have the
context get garbage collected while sandbox was still live. We need to
tie the lifetime of the context to the lifetime of the sandbox.
Fixes: https://github.com/nodejs/node/issues/5768
PR-URL: https://github.com/nodejs/node/pull/5786
Reviewed-By: jasnell - James M Snell <jasnell@gmail.com>
Reviewed-By: cjihrig - Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: trevnorris - Trevor Norris <trev.norris@gmail.com>
Reviewed-By: bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl>
30 lines
860 B
JavaScript
30 lines
860 B
JavaScript
'use strict';
|
|
// Flags: --expose-gc
|
|
require('../common');
|
|
var assert = require('assert');
|
|
|
|
var vm = require('vm');
|
|
|
|
console.error('run in a new empty context');
|
|
var context = vm.createContext();
|
|
var result = vm.runInContext('"passed";', context);
|
|
assert.equal('passed', result);
|
|
|
|
console.error('create a new pre-populated context');
|
|
context = vm.createContext({'foo': 'bar', 'thing': 'lala'});
|
|
assert.equal('bar', context.foo);
|
|
assert.equal('lala', context.thing);
|
|
|
|
console.error('test updating context');
|
|
result = vm.runInContext('var foo = 3;', context);
|
|
assert.equal(3, context.foo);
|
|
assert.equal('lala', context.thing);
|
|
|
|
// https://github.com/nodejs/node/issues/5768
|
|
console.error('run in contextified sandbox without referencing the context');
|
|
var sandbox = {x: 1};
|
|
vm.createContext(sandbox);
|
|
gc();
|
|
vm.runInContext('x = 2', sandbox);
|
|
// Should not crash.
|