diff options
author | James Bursa <james@netsurf-browser.org> | 2008-06-01 00:15:53 +0000 |
---|---|---|
committer | James Bursa <james@netsurf-browser.org> | 2008-06-01 00:15:53 +0000 |
commit | 70c7b81c2fd459c87697216b69c2bd17e5d3086c (patch) | |
tree | c01c67c82c9a80e9f0ac2cf3697ea25257da98cf /image/nssprite.c | |
parent | 21a3c99d3dcf20e13cdcf16fda6f01f6e6a3a1b3 (diff) | |
download | netsurf-70c7b81c2fd459c87697216b69c2bd17e5d3086c.tar.gz netsurf-70c7b81c2fd459c87697216b69c2bd17e5d3086c.tar.bz2 |
Improve MNG error handling to show error code. Fix code not expecting bitmap_get_buffer() to return 0.
svn path=/trunk/netsurf/; revision=4237
Diffstat (limited to 'image/nssprite.c')
-rw-r--r-- | image/nssprite.c | 13 |
1 files changed, 11 insertions, 2 deletions
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 */ |