Permalink
Browse files

Fix #2473

  • Loading branch information...
1 parent b07acb3 commit e6a30bd1077ee6dc4139f423db052c3de50ad1ef @ry ry committed Jan 9, 2012
Showing with 10 additions and 7 deletions.
  1. +1 −2 src/node_buffer.h
  2. +9 −5 src/stream_wrap.cc
View
@@ -65,6 +65,7 @@ namespace node {
class NODE_EXTERN Buffer: public ObjectWrap {
public:
+ static v8::Persistent<v8::FunctionTemplate> constructor_template;
static bool HasInstance(v8::Handle<v8::Value> val);
@@ -99,8 +100,6 @@ class NODE_EXTERN Buffer: public ObjectWrap {
free_callback callback, void *hint); // public constructor
private:
- static v8::Persistent<v8::FunctionTemplate> constructor_template;
-
static v8::Handle<v8::Value> New(const v8::Arguments &args);
static v8::Handle<v8::Value> BinarySlice(const v8::Arguments &args);
static v8::Handle<v8::Value> AsciiSlice(const v8::Arguments &args);
View
@@ -149,13 +149,17 @@ Handle<Value> StreamWrap::ReadStop(const Arguments& args) {
}
-inline char* StreamWrap::NewSlab(Handle<Object> global,
- Handle<Object> wrap_obj) {
- Buffer* b = Buffer::New(SLAB_SIZE);
- global->SetHiddenValue(slab_sym, b->handle_);
+char* StreamWrap::NewSlab(Handle<Object> global,
+ Handle<Object> wrap_obj) {
+ HandleScope scope;
+ Local<Value> arg = Integer::NewFromUnsigned(SLAB_SIZE);
+ Local<Object> b = Buffer::constructor_template->GetFunction()->
+ NewInstance(1, &arg);
+ if (b.IsEmpty()) return NULL;
+ global->SetHiddenValue(slab_sym, b);
assert(Buffer::Length(b) == SLAB_SIZE);
slab_used = 0;
- wrap_obj->SetHiddenValue(slab_sym, b->handle_);
+ wrap_obj->SetHiddenValue(slab_sym, b);
return Buffer::Data(b);
}

0 comments on commit e6a30bd

Please sign in to comment.