summaryrefslogtreecommitdiff
path: root/image/nssprite.c
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2008-06-01 00:15:53 +0000
committerJames Bursa <james@netsurf-browser.org>2008-06-01 00:15:53 +0000
commit70c7b81c2fd459c87697216b69c2bd17e5d3086c (patch)
treec01c67c82c9a80e9f0ac2cf3697ea25257da98cf /image/nssprite.c
parent21a3c99d3dcf20e13cdcf16fda6f01f6e6a3a1b3 (diff)
downloadnetsurf-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.c13
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 */