| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent b8ca4ee commit b3cbd13
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -148,11 +148,14 @@ void CallbackInfo::WeakCallback( | |||
| 148 | 148 | ||
| 149 | 149 | ||
| 150 | 150 | void CallbackInfo::WeakCallback(Isolate* isolate, Local<Object> object) { | |
| 151 | - SPREAD_ARG(object, obj); | ||
| 152 | - CHECK_EQ(obj_offset, 0); | ||
| 153 | - CHECK_EQ(obj_c.ByteLength(), obj_length); | ||
| 154 | - | ||
| 155 | - obj->Buffer()->Neuter(); | ||
| 151 | + CHECK(object->IsArrayBuffer()); | ||
| 152 | + Local<ArrayBuffer> buf = object.As<ArrayBuffer>(); | ||
| 153 | + ArrayBuffer::Contents obj_c = buf->GetContents(); | ||
| 154 | + char* const obj_data = static_cast<char*>(obj_c.Data()); | ||
| 155 | + if (buf->ByteLength() != 0) | ||
| 156 | + CHECK_NE(obj_data, nullptr); | ||
| 157 | + | ||
| 158 | + buf->Neuter(); | ||
| 156 | 159 | callback_(obj_data, hint_); | |
| 157 | 160 | int64_t change_in_bytes = -static_cast<int64_t>(sizeof(*this)); | |
| 158 | 161 | isolate->AdjustAmountOfExternalAllocatedMemory(change_in_bytes); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -16,7 +16,7 @@ void Alloc(const v8::FunctionCallbackInfo<v8::Value>& args) { | |||
| 16 | 16 | args.GetReturnValue().Set(node::Buffer::New( | |
| 17 | 17 | isolate, | |
| 18 | 18 | buf, | |
| 19 | - sizeof(buf), | ||
| 19 | + args[0]->IntegerValue(), | ||
| 20 | 20 | FreeCallback, | |
| 21 | 21 | nullptr).ToLocalChecked()); | |
| 22 | 22 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -4,7 +4,20 @@ | |||
| 4 | 4 | require('../../common'); | |
| 5 | 5 | var assert = require('assert'); | |
| 6 | 6 | var binding = require('./build/Release/binding'); | |
| 7 | - var buf = binding.alloc(); | ||
| 8 | - var slice = buf.slice(32); | ||
| 9 | - buf = null; | ||
| 10 | - binding.check(slice); | ||
| 7 | + | ||
| 8 | + function check(size) { | ||
| 9 | + var buf = binding.alloc(size); | ||
| 10 | + var slice = buf.slice(size >>> 1); | ||
| 11 | + | ||
| 12 | + buf = null; | ||
| 13 | + binding.check(slice); | ||
| 14 | + slice = null; | ||
| 15 | + gc(); | ||
| 16 | + gc(); | ||
| 17 | + gc(); | ||
| 18 | + } | ||
| 19 | + | ||
| 20 | + check(64); | ||
| 21 | + | ||
| 22 | + // Empty ArrayBuffer does not allocate data, worth checking | ||
| 23 | + check(0); | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments