summaryrefslogtreecommitdiff
path: root/test/addons/buffer-free-callback
diff options
context:
space:
mode:
authorFedor Indutny <fedor@indutny.com>2015-10-12 16:08:13 -0400
committerJames M Snell <jasnell@gmail.com>2015-10-12 20:47:10 -0700
commit931118c9d7ec81bd8bc6ebadfe08aeb056283544 (patch)
tree60235cef915d44cc0b9380dc7d951d8129975624 /test/addons/buffer-free-callback
parent7d94611ac9c356450d668810f66034316a2039e9 (diff)
downloadnode-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.cc2
-rw-r--r--test/addons/buffer-free-callback/test.js21
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);