From 960e2f37f9edaf15b514846eb26481e7b8490f30 Mon Sep 17 00:00:00 2001 From: Fred Cox Date: Thu, 18 Jul 2024 12:47:28 +0100 Subject: [PATCH] Throw surface errors in toBuffer --- CHANGELOG.md | 1 + src/Canvas.cc | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77cc5db8e..3f8c67a1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ project adheres to [Semantic Versioning](http://semver.org/). ================== ### Changed ### Added +* Throw errors in canvas ### Fixed diff --git a/src/Canvas.cc b/src/Canvas.cc index 2555605f9..3c2396352 100644 --- a/src/Canvas.cc +++ b/src/Canvas.cc @@ -382,7 +382,15 @@ Canvas::ToBuffer(const Napi::CallbackInfo& info) { closure = static_cast(backend())->closure(); } - cairo_surface_finish(surface()); + cairo_surface_t *surf = surface(); + cairo_surface_finish(surf); + + cairo_status_t status = cairo_surface_status(surf); + if (status != CAIRO_STATUS_SUCCESS) { + Napi::Error::New(env, cairo_status_to_string(status)).ThrowAsJavaScriptException(); + return env.Undefined(); + } + return Napi::Buffer::Copy(env, &closure->vec[0], closure->vec.size()); }