From 833377cc8beca8261c6fed715a945ce8336d7c70 Mon Sep 17 00:00:00 2001 From: Trevor Norris Date: Tue, 2 Jun 2015 10:18:01 -0600 Subject: [PATCH] buffer: switch to using Maybe API Use the new Maybe syntax for v8::Object::SetPrototype(). PR-URL: https://github.com/nodejs/io.js/pull/1825 Reviewed-By: Ben Noordhuis --- src/node_buffer.cc | 46 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/src/node_buffer.cc b/src/node_buffer.cc index 57268e749da6e4..765f642d10faf7 100644 --- a/src/node_buffer.cc +++ b/src/node_buffer.cc @@ -73,6 +73,7 @@ using v8::Handle; using v8::HandleScope; using v8::Isolate; using v8::Local; +using v8::Maybe; using v8::Number; using v8::Object; using v8::Persistent; @@ -298,7 +299,13 @@ Local New(Environment* env, size_t length) { length, ArrayBufferCreationMode::kInternalized); Local ui = Uint8Array::New(ab, 0, length); - ui->SetPrototype(env->buffer_prototype_object()); + Maybe mb = + ui->SetPrototype(env->context(), env->buffer_prototype_object()); + if (!mb.FromMaybe(false)) { + FatalError("node::Buffer::New(Environment*, size_t)", + "Could not set Object prototype"); + UNREACHABLE(); + } return scope.Escape(ui); } @@ -361,7 +368,13 @@ Local New(Environment* env, const char* data, size_t length) { length, ArrayBufferCreationMode::kInternalized); Local ui = Uint8Array::New(ab, 0, length); - ui->SetPrototype(env->buffer_prototype_object()); + Maybe mb = + ui->SetPrototype(env->context(), env->buffer_prototype_object()); + if (!mb.FromMaybe(false)) { + FatalError("node::Buffer::New(Environment*, char*, size_t)", + "Could not set Object prototype"); + UNREACHABLE(); + } return scope.Escape(ui); } @@ -401,7 +414,14 @@ Local New(Environment* env, Local ab = ArrayBuffer::New(env->isolate(), data, length); Local ui = Uint8Array::New(ab, 0, length); - ui->SetPrototype(env->buffer_prototype_object()); + Maybe mb = + ui->SetPrototype(env->context(), env->buffer_prototype_object()); + if (!mb.FromMaybe(false)) { + FatalError("node::Buffer::New(Environment*, char*, size_t," + " FreeCallback, void*)", + "Could not set Object prototype"); + UNREACHABLE(); + } CallbackInfo::New(env->isolate(), ui, callback, hint); return scope.Escape(ui); } @@ -441,7 +461,13 @@ Local Use(Environment* env, char* data, size_t length) { length, ArrayBufferCreationMode::kInternalized); Local ui = Uint8Array::New(ab, 0, length); - ui->SetPrototype(env->buffer_prototype_object()); + Maybe mb = + ui->SetPrototype(env->context(), env->buffer_prototype_object()); + if (!mb.FromMaybe(false)) { + FatalError("node::Buffer::Use(Environment*, char*, size_t)", + "Could not set Object prototype"); + UNREACHABLE(); + } return scope.Escape(ui); } @@ -473,8 +499,10 @@ void Create(const FunctionCallbackInfo& args) { length, ArrayBufferCreationMode::kInternalized); Local ui = Uint8Array::New(ab, 0, length); - ui->SetPrototype(env->buffer_prototype_object()); - args.GetReturnValue().Set(ui); + Maybe mb = + ui->SetPrototype(env->context(), env->buffer_prototype_object()); + if (mb.FromMaybe(false)) + args.GetReturnValue().Set(ui); } @@ -505,8 +533,10 @@ void Slice(const FunctionCallbackInfo& args) { size_t size = end - start; CHECK_GE(ab_c.ByteLength(), start + size); Local ui = Uint8Array::New(ab, start, size); - ui->SetPrototype(env->buffer_prototype_object()); - args.GetReturnValue().Set(ui); + Maybe mb = + ui->SetPrototype(env->context(), env->buffer_prototype_object()); + if (mb.FromMaybe(false)) + args.GetReturnValue().Set(ui); }