From 70c7b81c2fd459c87697216b69c2bd17e5d3086c Mon Sep 17 00:00:00 2001 From: James Bursa Date: Sun, 1 Jun 2008 00:15:53 +0000 Subject: Improve MNG error handling to show error code. Fix code not expecting bitmap_get_buffer() to return 0. svn path=/trunk/netsurf/; revision=4237 --- image/nssprite.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'image/nssprite.c') diff --git a/image/nssprite.c b/image/nssprite.c index c9aff34e9..e7e40683b 100644 --- a/image/nssprite.c +++ b/image/nssprite.c @@ -58,8 +58,10 @@ bool nssprite_convert(struct content *c, int width, int height) { + union content_msg_data msg_data; + struct rosprite_mem_context* ctx; - ERRCHK(rosprite_create_mem_context((uint8_t *) c->source_data, + ERRCHK(rosprite_create_mem_context((uint8_t *) c->source_data, c->total_size, &ctx)); struct rosprite_area* sprite_area; @@ -73,11 +75,18 @@ bool nssprite_convert(struct content *c, int width, int height) c->bitmap = bitmap_create(sprite->width, sprite->height, BITMAP_NEW); if (!c->bitmap) { + msg_data.error = messages_get("NoMemory"); + content_broadcast(c, CONTENT_MSG_ERROR, msg_data); return false; } char* imagebuf = bitmap_get_buffer(c->bitmap); + if (!imagebuf) { + msg_data.error = messages_get("NoMemory"); + content_broadcast(c, CONTENT_MSG_ERROR, msg_data); + return false; + } unsigned int row_width = bitmap_get_rowstride(c->bitmap); - + memcpy(imagebuf, sprite->image, row_width * sprite->height); // TODO: avoid copying entire image buffer /* reverse byte order of each word */ -- cgit v1.2.3