diff options
author | Fedor Indutny <fedor@indutny.com> | 2015-10-12 16:08:13 -0400 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2015-10-12 20:47:10 -0700 |
commit | 931118c9d7ec81bd8bc6ebadfe08aeb056283544 (patch) | |
tree | 60235cef915d44cc0b9380dc7d951d8129975624 /test/addons/buffer-free-callback | |
parent | 7d94611ac9c356450d668810f66034316a2039e9 (diff) | |
download | node-new-931118c9d7ec81bd8bc6ebadfe08aeb056283544.tar.gz |
buffer: fix assertion error in WeakCallback
`CallbackInfo` is now bound to `ArrayBuffer` instance, not `Uint8Array`,
therefore `SPREAD_ARG` will abort with:
Assertion failed: ((object)->IsUint8Array())
Make changes necessary to migrate it to `ArrayBuffer`.
See: https://github.com/nodejs/node/pull/3080#issuecomment-147502167
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/3329
Diffstat (limited to 'test/addons/buffer-free-callback')
-rw-r--r-- | test/addons/buffer-free-callback/binding.cc | 2 | ||||
-rw-r--r-- | test/addons/buffer-free-callback/test.js | 21 |
2 files changed, 18 insertions, 5 deletions
diff --git a/test/addons/buffer-free-callback/binding.cc b/test/addons/buffer-free-callback/binding.cc index a1e7773e95..e5298a0063 100644 --- a/test/addons/buffer-free-callback/binding.cc +++ b/test/addons/buffer-free-callback/binding.cc @@ -16,7 +16,7 @@ void Alloc(const v8::FunctionCallbackInfo<v8::Value>& args) { args.GetReturnValue().Set(node::Buffer::New( isolate, buf, - sizeof(buf), + args[0]->IntegerValue(), FreeCallback, nullptr).ToLocalChecked()); } diff --git a/test/addons/buffer-free-callback/test.js b/test/addons/buffer-free-callback/test.js index b95f171de2..6ee328d522 100644 --- a/test/addons/buffer-free-callback/test.js +++ b/test/addons/buffer-free-callback/test.js @@ -4,7 +4,20 @@ require('../../common'); var assert = require('assert'); var binding = require('./build/Release/binding'); -var buf = binding.alloc(); -var slice = buf.slice(32); -buf = null; -binding.check(slice); + +function check(size) { + var buf = binding.alloc(size); + var slice = buf.slice(size >>> 1); + + buf = null; + binding.check(slice); + slice = null; + gc(); + gc(); + gc(); +} + +check(64); + +// Empty ArrayBuffer does not allocate data, worth checking +check(0); |