diff --git a/src/CanvasRenderingContext2d.cc b/src/CanvasRenderingContext2d.cc index 4a056d3..5daef19 100644 --- a/src/CanvasRenderingContext2d.cc +++ b/src/CanvasRenderingContext2d.cc @@ -962,9 +962,13 @@ Context2d::IsPointInPath(const Arguments &args) { Handle Context2d::SetFillPattern(const Arguments &args) { HandleScope scope; - // TODO: HasInstance / error handling + + Local obj = args[0]->ToObject(); + if (!Gradient::constructor->HasInstance(obj)) + return ThrowException(Exception::TypeError(String::New("Gradient expected"))); + Context2d *context = ObjectWrap::Unwrap(args.This()); - Gradient *grad = ObjectWrap::Unwrap(args[0]->ToObject()); + Gradient *grad = ObjectWrap::Unwrap(obj); context->state->fillPattern = grad->pattern(); return Undefined(); } @@ -976,9 +980,13 @@ Context2d::SetFillPattern(const Arguments &args) { Handle Context2d::SetStrokePattern(const Arguments &args) { HandleScope scope; - // TODO: HasInstance / error handling + + Local obj = args[0]->ToObject(); + if (!Gradient::constructor->HasInstance(obj)) + return ThrowException(Exception::TypeError(String::New("Gradient expected"))); + Context2d *context = ObjectWrap::Unwrap(args.This()); - Gradient *grad = ObjectWrap::Unwrap(args[0]->ToObject()); + Gradient *grad = ObjectWrap::Unwrap(obj); context->state->strokePattern = grad->pattern(); return Undefined(); }