Skip to content

Commit 7ab4a77

Browse files
langpavelbnoordhuis
authored andcommitted
buffer: update constructor prototype
Change Buffer::New(char*, size_t) to Buffer::New(const char*, size_t).
1 parent bec863b commit 7ab4a77

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

src/node_buffer.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,14 @@ Buffer* Buffer::New(size_t length) {
137137
}
138138

139139

140-
Buffer* Buffer::New(char* data, size_t length) {
140+
Buffer* Buffer::New(const char* data, size_t length) {
141141
HandleScope scope;
142142

143143
Local<Value> arg = Integer::NewFromUnsigned(0);
144144
Local<Object> obj = constructor_template->GetFunction()->NewInstance(1, &arg);
145145

146146
Buffer *buffer = ObjectWrap::Unwrap<Buffer>(obj);
147-
buffer->Replace(data, length, NULL, NULL);
147+
buffer->Replace(const_cast<char*>(data), length, NULL, NULL);
148148

149149
return buffer;
150150
}
@@ -198,6 +198,8 @@ Buffer::~Buffer() {
198198
}
199199

200200

201+
// if replace doesn't have a callback, data must be copied
202+
// const_cast in Buffer::New requires this
201203
void Buffer::Replace(char *data, size_t length,
202204
free_callback callback, void *hint) {
203205
HandleScope scope;

src/node_buffer.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,14 @@ class NODE_EXTERN Buffer: public ObjectWrap {
102102
static v8::Handle<v8::Object> New(v8::Handle<v8::String> string);
103103

104104
static void Initialize(v8::Handle<v8::Object> target);
105-
static Buffer* New(size_t length); // public constructor
106-
static Buffer* New(char *data, size_t len); // public constructor
105+
106+
// public constructor
107+
static Buffer* New(size_t length);
108+
// public constructor - data is copied
109+
static Buffer* New(const char *data, size_t len);
110+
// public constructor
107111
static Buffer* New(char *data, size_t length,
108-
free_callback callback, void *hint); // public constructor
112+
free_callback callback, void *hint);
109113

110114
private:
111115
static v8::Handle<v8::Value> New(const v8::Arguments &args);

0 commit comments

Comments
 (0)