@@ -83,6 +83,7 @@ Canvas::Initialize(Napi::Env& env, Napi::Object& exports) {
8383 */
8484
8585Canvas::Canvas (const Napi::CallbackInfo& info) : Napi::ObjectWrap<Canvas>(info), env(info.Env()) {
86+ Napi::Env env = info.Env ();
8687 InstanceData* data = env.GetInstanceData <InstanceData>();
8788 ctor = Napi::Persistent (data->CanvasCtor .Value ());
8889
@@ -149,11 +150,11 @@ Napi::Value
149150Canvas::GetType (const Napi::CallbackInfo& info) {
150151 switch (type) {
151152 case CANVAS_TYPE_PDF:
152- return Napi::String::New (env , " pdf" );
153+ return Napi::String::New (info. Env () , " pdf" );
153154 case CANVAS_TYPE_SVG:
154- return Napi::String::New (env , " svg" );
155+ return Napi::String::New (info. Env () , " svg" );
155156 default :
156- return Napi::String::New (env , " image" );
157+ return Napi::String::New (info. Env () , " image" );
157158 }
158159}
159160
@@ -162,7 +163,7 @@ Canvas::GetType(const Napi::CallbackInfo& info) {
162163 */
163164Napi::Value
164165Canvas::GetStride (const Napi::CallbackInfo& info) {
165- return Napi::Number::New (env , cairo_image_surface_get_stride (ensureSurface ()));
166+ return Napi::Number::New (info. Env () , cairo_image_surface_get_stride (ensureSurface ()));
166167}
167168
168169/*
@@ -171,7 +172,7 @@ Canvas::GetStride(const Napi::CallbackInfo& info) {
171172
172173Napi::Value
173174Canvas::GetWidth (const Napi::CallbackInfo& info) {
174- return Napi::Number::New (env , getWidth ());
175+ return Napi::Number::New (info. Env () , getWidth ());
175176}
176177
177178/*
@@ -194,7 +195,7 @@ Canvas::SetWidth(const Napi::CallbackInfo& info, const Napi::Value& value) {
194195
195196Napi::Value
196197Canvas::GetHeight (const Napi::CallbackInfo& info) {
197- return Napi::Number::New (env , getHeight ());
198+ return Napi::Number::New (info. Env () , getHeight ());
198199}
199200
200201/*
@@ -374,6 +375,7 @@ static void setPdfMetadata(Canvas* canvas, Napi::Object opts) {
374375
375376Napi::Value
376377Canvas::ToBuffer (const Napi::CallbackInfo& info) {
378+ Napi::Env env = info.Env ();
377379 cairo_status_t status;
378380
379381 // Vector canvases, sync only
@@ -432,7 +434,7 @@ Canvas::ToBuffer(const Napi::CallbackInfo& info) {
432434 }
433435 }
434436 } catch (cairo_status_t ex) {
435- CairoError (ex).ThrowAsJavaScriptException ();
437+ CairoError (env, ex).ThrowAsJavaScriptException ();
436438 } catch (const char * ex) {
437439 Napi::Error::New (env, ex).ThrowAsJavaScriptException ();
438440 }
@@ -449,7 +451,7 @@ Canvas::ToBuffer(const Napi::CallbackInfo& info) {
449451 closure = new PngClosure (this );
450452 parsePNGArgs (info[2 ], *closure);
451453 } catch (cairo_status_t ex) {
452- CairoError (ex).ThrowAsJavaScriptException ();
454+ CairoError (env, ex).ThrowAsJavaScriptException ();
453455 return env.Undefined ();
454456 } catch (const char * ex) {
455457 Napi::Error::New (env, ex).ThrowAsJavaScriptException ();
@@ -483,7 +485,7 @@ Canvas::ToBuffer(const Napi::CallbackInfo& info) {
483485 return Napi::Buffer<uint8_t >::Copy (env, &closure.vec [0 ], closure.vec .size ());
484486 }
485487 } catch (cairo_status_t ex) {
486- CairoError (ex).ThrowAsJavaScriptException ();
488+ CairoError (env, ex).ThrowAsJavaScriptException ();
487489 return env.Undefined ();
488490 }
489491 return env.Undefined ();
@@ -516,7 +518,7 @@ Canvas::ToBuffer(const Napi::CallbackInfo& info) {
516518static cairo_status_t
517519streamPNG (void *c, const uint8_t *data, unsigned len) {
518520 PngClosure* closure = (PngClosure*) c;
519- Napi::Env env = closure->canvas -> env ;
521+ Napi::Env env = closure->cb . Env () ;
520522 Napi::HandleScope scope (env);
521523 Napi::AsyncContext async (env, " canvas:StreamPNG" );
522524 Napi::Value buf = Napi::Buffer<uint8_t >::Copy (env, data, len);
@@ -531,6 +533,7 @@ streamPNG(void *c, const uint8_t *data, unsigned len) {
531533
532534void
533535Canvas::StreamPNGSync (const Napi::CallbackInfo& info) {
536+ Napi::Env env = info.Env ();
534537 if (!info[0 ].IsFunction ()) {
535538 Napi::TypeError::New (env, " callback function required" ).ThrowAsJavaScriptException ();
536539 return ;
@@ -545,7 +548,7 @@ Canvas::StreamPNGSync(const Napi::CallbackInfo& info) {
545548
546549 if (!env.IsExceptionPending ()) {
547550 if (status) {
548- closure.cb .Call (env.Global (), { CairoError (status).Value () });
551+ closure.cb .Call (env.Global (), { CairoError (env, status).Value () });
549552 } else {
550553 closure.cb .Call (env.Global (), { env.Null (), env.Null (), Napi::Number::New (env, 0 ) });
551554 }
@@ -599,6 +602,7 @@ cairo_status_t canvas_write_to_pdf_stream(cairo_surface_t *surface, cairo_write_
599602
600603void
601604Canvas::StreamPDFSync (const Napi::CallbackInfo& info) {
605+ Napi::Env env = info.Env ();
602606 if (!info[0 ].IsFunction ()) {
603607 Napi::TypeError::New (env, " callback function required" ).ThrowAsJavaScriptException ();
604608 return ;
@@ -628,7 +632,7 @@ Canvas::StreamPDFSync(const Napi::CallbackInfo& info) {
628632
629633 if (!env.IsExceptionPending ()) {
630634 if (status) {
631- fn.Call (env.Global (), { CairoError (status).Value () });
635+ fn.Call (env.Global (), { CairoError (env, status).Value () });
632636 } else {
633637 fn.Call (env.Global (), { env.Null (), env.Null (), Napi::Number::New (env, 0 ) });
634638 }
@@ -649,7 +653,7 @@ static uint32_t getSafeBufSize(Canvas* canvas) {
649653void
650654Canvas::StreamJPEGSync (const Napi::CallbackInfo& info) {
651655 if (!info[1 ].IsFunction ()) {
652- Napi::TypeError::New (env , " callback function required" ).ThrowAsJavaScriptException ();
656+ Napi::TypeError::New (info. Env () , " callback function required" ).ThrowAsJavaScriptException ();
653657 return ;
654658 }
655659
@@ -941,7 +945,7 @@ Canvas::getFormat() {
941945
942946void
943947Canvas::resurface (Napi::Object This, uint16_t width, uint16_t height) {
944- Napi::HandleScope scope (env );
948+ Napi::HandleScope scope (This. Env () );
945949 Napi::Value context;
946950
947951 if (type == CANVAS_TYPE_PDF) {
@@ -1021,6 +1025,6 @@ Canvas::createCairoContext() {
10211025 */
10221026
10231027Napi::Error
1024- Canvas::CairoError (cairo_status_t status) {
1028+ Canvas::CairoError (Napi::Env env, cairo_status_t status) {
10251029 return Napi::Error::New (env, cairo_status_to_string (status));
10261030}
0 commit comments