From 6f6ce235dddf3f4f624c84ab23407af49db7cade Mon Sep 17 00:00:00 2001 From: Tj Holowaychuk Date: Wed, 10 Nov 2010 23:44:49 -0800 Subject: [PATCH] Handling Image::loadSurface() failure --- src/Image.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Image.cc b/src/Image.cc index 43394b2..5b772d4 100644 --- a/src/Image.cc +++ b/src/Image.cc @@ -150,9 +150,16 @@ EIO_Load(eio_req *req) { static int EIO_AfterLoad(eio_req *req) { + HandleScope scope; Image *img = (Image *) req->data; - // TODO: handle CAIRO_STATUS_{NO_MEMORY,FILE_NOT_FOUND,READ_ERROR} - img->loaded(); + + if (req->result) { + Local argv[1] = { Canvas::Error((cairo_status_t) req->result) }; + img->onerror->Call(Context::GetCurrent()->Global(), 1, argv); + } else { + img->loaded(); + } + ev_unref(EV_DEFAULT_UC); return 0; }