From 0f20407daac17bcfd9b9020b47e7a540d67df85a Mon Sep 17 00:00:00 2001 From: Tj Holowaychuk Date: Wed, 17 Nov 2010 10:02:53 -0800 Subject: [PATCH] Checking instanceof Canvas for PixelArray --- src/PixelArray.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/PixelArray.cc b/src/PixelArray.cc index 9e4eaa0..721fcba 100644 --- a/src/PixelArray.cc +++ b/src/PixelArray.cc @@ -38,7 +38,7 @@ Handle PixelArray::New(const Arguments &args) { HandleScope scope; PixelArray *arr; - // TODO: arg handling + Local obj = args[0]->ToObject(); switch (args.Length()) { // width, height @@ -49,7 +49,10 @@ PixelArray::New(const Arguments &args) { break; // canvas, x, y, width, height case 5: { - Canvas *canvas = ObjectWrap::Unwrap(args[0]->ToObject()); + if (!Canvas::constructor->HasInstance(obj)) + return ThrowException(Exception::TypeError(String::New("Canvas expected"))); + + Canvas *canvas = ObjectWrap::Unwrap(obj); arr = new PixelArray( canvas , args[1]->Int32Value() @@ -61,6 +64,7 @@ PixelArray::New(const Arguments &args) { default: return ThrowException(Exception::TypeError(String::New("invalid arguments"))); } + // Let v8 handle accessors (and clamping) args.This()->SetIndexedPropertiesToPixelData( arr->data()