From 0cf03ab8002795fed572bfaa31c51cced553bc2c Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Oct 2010 19:08:51 -0700 Subject: [PATCH] Add char* constructor for Buffer --- src/node_buffer.cc | 12 ++++++++++++ src/node_buffer.h | 1 + 2 files changed, 13 insertions(+) diff --git a/src/node_buffer.cc b/src/node_buffer.cc index 04e17ec4b24..ae59b63f14e 100644 --- a/src/node_buffer.cc +++ b/src/node_buffer.cc @@ -92,6 +92,18 @@ Buffer* Buffer::New(size_t size) { } +Buffer* Buffer::New(char* data, size_t len) { + HandleScope scope; + + Local arg = Integer::NewFromUnsigned(len); + Local obj = constructor_template->GetFunction()->NewInstance(1, &arg); + + Buffer *buffer = ObjectWrap::Unwrap(obj); + + memcpy(buffer->data_, data, len); +} + + char* Buffer::Data(Handle obj) { if (obj->HasIndexedPropertiesInPixelData()) { return (char*)obj->GetIndexedPropertiesPixelData(); diff --git a/src/node_buffer.h b/src/node_buffer.h index 18dda5201af..d191eb62e34 100644 --- a/src/node_buffer.h +++ b/src/node_buffer.h @@ -35,6 +35,7 @@ class Buffer : public ObjectWrap { static void Initialize(v8::Handle target); static Buffer* New(size_t length); // public constructor + static Buffer* New(char *data, size_t len); // public constructor static bool HasInstance(v8::Handle val); static char* Data(v8::Handle);