diff --git a/lib/smalloc.js b/lib/smalloc.js index ba042c6c4c..fd82ba8c42 100644 --- a/lib/smalloc.js +++ b/lib/smalloc.js @@ -86,6 +86,8 @@ function dispose(obj) { throw new TypeError('obj must be an Object'); if (util.isBuffer(obj)) throw new TypeError('obj cannot be a Buffer'); + if (!smalloc.hasExternalData(obj)) + throw new Error('obj has no external array data'); smalloc.dispose(obj); } diff --git a/test/simple/test-smalloc.js b/test/simple/test-smalloc.js index ea6f7bf4ad..091f5aa7e0 100644 --- a/test/simple/test-smalloc.js +++ b/test/simple/test-smalloc.js @@ -314,11 +314,15 @@ for (var i = 0; i < 5; i++) // only allow object to be passed to dispose assert.throws(function() { - alloc.dispose(null); + smalloc.dispose(null); }); // can't dispose a Buffer assert.throws(function() { - alloc.dispose(new Buffer()); + smalloc.dispose(new Buffer()); +}); + +assert.throws(function() { + smalloc.dispose({}); });