diff --git a/src/Canvas.cc b/src/Canvas.cc index 6536db6..0c25e66 100644 --- a/src/Canvas.cc +++ b/src/Canvas.cc @@ -155,12 +155,12 @@ EIO_AfterToBuffer(eio_req *req) { ev_unref(EV_DEFAULT_UC); if (closure->status) { - Handle argv[1] = { Canvas::Error(closure->status) }; + Local argv[1] = { Canvas::Error(closure->status) }; closure->pfn->Call(Context::GetCurrent()->Global(), 1, argv); } else { Buffer *buf = Buffer::New(closure->len); memcpy(buf->data(), closure->data, closure->len); - Handle argv[2] = { Null(), buf->handle_ }; + Local argv[2] = { Local::New(Null()), Local::New(buf->handle_) }; closure->pfn->Call(Context::GetCurrent()->Global(), 2, argv); } @@ -215,14 +215,18 @@ Canvas::ToBuffer(const Arguments &args) { static cairo_status_t streamPNG(void *c, const uint8_t *data, unsigned len) { + HandleScope scope; closure_t *closure = (closure_t *) c; - Buffer *buf = Buffer::New(len); + Local buf = Buffer::New(len); #if NODE_VERSION_AT_LEAST(0,3,0) memcpy(Buffer::Data(buf->handle_), data, len); #else memcpy(buf->data(), data, len); #endif - Handle argv[3] = { Null(), buf->handle_, Integer::New(len) }; + Local argv[3] = { + Local::New(Null()) + , Local::New(buf->handle_) + , Integer::New(len) }; closure->fn->Call(Context::GetCurrent()->Global(), 3, argv); return CAIRO_STATUS_SUCCESS; } @@ -248,10 +252,13 @@ Canvas::StreamPNGSync(const Arguments &args) { if (try_catch.HasCaught()) { return try_catch.ReThrow(); } else if (status) { - Handle argv[1] = { Canvas::Error(status) }; + Local argv[1] = { Canvas::Error(status) }; closure.fn->Call(Context::GetCurrent()->Global(), 1, argv); } else { - Handle argv[3] = { Null(), Null(), Integer::New(0) }; + Local argv[3] = { + Local::New(Null()) + , Local::New(Null()) + , Integer::New(0) }; closure.fn->Call(Context::GetCurrent()->Global(), 3, argv); } return Undefined(); @@ -289,7 +296,7 @@ Canvas::resurface() { * Construct an Error from the given cairo status. */ -Handle +Local Canvas::Error(cairo_status_t status) { return Exception::Error(String::New(cairo_status_to_string(status))); } diff --git a/src/Canvas.h b/src/Canvas.h index 6902b26..a46ae03 100644 --- a/src/Canvas.h +++ b/src/Canvas.h @@ -58,7 +58,7 @@ class Canvas: public node::ObjectWrap { static void SetWidth(Local prop, Local val, const AccessorInfo &info); static void SetHeight(Local prop, Local val, const AccessorInfo &info); static Handle StreamPNGSync(const Arguments &args); - static Handle Error(cairo_status_t status); + static Local Error(cairo_status_t status); inline cairo_surface_t *getSurface(){ return _surface; } Canvas(int width, int height); void resurface();