diff --git a/src/Canvas.cc b/src/Canvas.cc index 76d5363..5c325e8 100644 --- a/src/Canvas.cc +++ b/src/Canvas.cc @@ -288,18 +288,18 @@ Canvas::~Canvas() { void Canvas::resurface(Handle canvas) { - HandleScope scope; - // Re-surface cairo_surface_destroy(_surface); _surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height); // Reset context - Local context = canvas->Get(String::New("context")); - Context2d *context2d = ObjectWrap::Unwrap(context->ToObject()); - cairo_t *prev = context2d->context(); - context2d->setContext(cairo_create(surface())); - cairo_destroy(prev); + Handle context = canvas->Get(String::New("context")); + if (!context->IsUndefined()) { + Context2d *context2d = ObjectWrap::Unwrap(context->ToObject()); + cairo_t *prev = context2d->context(); + context2d->setContext(cairo_create(surface())); + cairo_destroy(prev); + } } /*