summaryrefslogtreecommitdiff
path: root/gdk-pixbuf/io-tga.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdk-pixbuf/io-tga.c')
-rw-r--r--gdk-pixbuf/io-tga.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/gdk-pixbuf/io-tga.c b/gdk-pixbuf/io-tga.c
index 7500359f6..13f8d8184 100644
--- a/gdk-pixbuf/io-tga.c
+++ b/gdk-pixbuf/io-tga.c
@@ -683,27 +683,29 @@ static gboolean gdk_pixbuf__tga_load_increment(gpointer data,
static gboolean gdk_pixbuf__tga_stop_load(gpointer data, GError **err)
{
TGAContext *ctx = (TGAContext *) data;
- g_return_val_if_fail(ctx != NULL, FALSE);
+ gboolean result = TRUE;
+
+ g_return_val_if_fail (ctx != NULL, FALSE);
- if (ctx->pbuf)
+ if (ctx->pbuf == NULL || tga_pixels_remaining (ctx))
{
- TGAColor transparent_black = { 0, 0, 0, 0 };
- gsize remaining;
+ g_set_error_literal (err,
+ GDK_PIXBUF_ERROR,
+ GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
+ _("TGA image was truncated or incomplete."));
- for (remaining = tga_pixels_remaining (ctx); remaining; remaining--)
- {
- tga_write_pixel (ctx, &transparent_black);
- }
+ result = FALSE;
}
g_free (ctx->hdr);
if (ctx->cmap)
colormap_free (ctx->cmap);
if (ctx->pbuf)
- g_object_unref (ctx->pbuf);
+ g_object_unref (ctx->pbuf);
gdk_pixbuf_buffer_queue_unref (ctx->input);
g_free (ctx);
- return TRUE;
+
+ return result;
}
#ifndef INCLUDE_tga