summaryrefslogtreecommitdiff
path: root/image/nssprite.c
diff options
context:
space:
mode:
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 */