summaryrefslogtreecommitdiff
path: root/image/jpeg.c
diff options
context:
space:
mode:
authorRichard Wilson <rjw@netsurf-browser.org>2006-01-24 23:05:56 +0000
committerRichard Wilson <rjw@netsurf-browser.org>2006-01-24 23:05:56 +0000
commitab9856c52acf6846d94478e5e8cdcf4d400512c5 (patch)
tree918f1411e7e38a20d9f0157f7eadf415b92bf217 /image/jpeg.c
parentef1f971a9aec3adb6b350677eabca24681ce6a9d (diff)
downloadnetsurf-ab9856c52acf6846d94478e5e8cdcf4d400512c5.tar.gz
netsurf-ab9856c52acf6846d94478e5e8cdcf4d400512c5.tar.bz2
[project @ 2006-01-24 23:05:56 by rjw]
Handle memory failure better. svn path=/import/netsurf/; revision=2030
Diffstat (limited to 'image/jpeg.c')
-rw-r--r--image/jpeg.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/image/jpeg.c b/image/jpeg.c
index 80f4019be..86f205964 100644
--- a/image/jpeg.c
+++ b/image/jpeg.c
@@ -67,7 +67,7 @@ bool nsjpeg_convert(struct content *c, int w, int h)
unsigned int height;
unsigned int width;
struct bitmap *bitmap = NULL;
- char *pixels;
+ char *pixels = NULL;
size_t rowstride;
union content_msg_data msg_data;
@@ -95,8 +95,12 @@ bool nsjpeg_convert(struct content *c, int w, int h)
height = cinfo.output_height;
bitmap = bitmap_create(width, height, false);
- if (!bitmap) {
+ if (bitmap)
+ pixels = bitmap_get_buffer(bitmap);
+ if ((!bitmap) || (!pixels)) {
jpeg_destroy_decompress(&cinfo);
+ if (bitmap)
+ bitmap_destroy(bitmap);
msg_data.error = messages_get("NoMemory");
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
@@ -105,7 +109,6 @@ bool nsjpeg_convert(struct content *c, int w, int h)
}
bitmap_set_opaque(bitmap, true);
- pixels = bitmap_get_buffer(bitmap);
rowstride = bitmap_get_rowstride(bitmap);
do {
JSAMPROW scanlines[1];