The fix involves using imlib2 built with giflib instead of a libungif. Initially I split imlib2 into two but other distros seem to build imlib2 with giflib already and everything still builds with giflib version so I migrated imlib2 to giflib all together. Closes #4622wip/yesman
parent
7c605db462
commit
de96fb7cc7
@ -1,25 +0,0 @@ |
||||
From b901236261dc717dc08ed10f63e2d5cd3f3031f8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Bart=C5=82omiej=20Piotrowski?= <b@bpiotrowski.pl>
|
||||
Date: Tue, 27 May 2014 11:46:06 +0200
|
||||
Subject: [PATCH] Fix build with giflib >= 5.1.0.
|
||||
|
||||
---
|
||||
image.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/image.c b/image.c
|
||||
index e62a69f..7eec544 100644
|
||||
--- a/image.c
|
||||
+++ b/image.c
|
||||
@@ -278,7 +278,11 @@ bool img_load_gif(img_t *img, const fileinfo_t *file)
|
||||
}
|
||||
} while (rec != TERMINATE_RECORD_TYPE);
|
||||
|
||||
+#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 && GIFLIB_MINOR >= 1
|
||||
+ DGifCloseFile(gif, NULL);
|
||||
+#else
|
||||
DGifCloseFile(gif);
|
||||
+#endif
|
||||
|
||||
if (err && !file->loaded)
|
||||
warn("corrupted gif file: %s", file->name);
|
@ -0,0 +1,64 @@ |
||||
diff -ruN imlib2-1.4.6.orig/src/modules/loaders/loader_gif.c imlib2-1.4.6/src/modules/loaders/loader_gif.c
|
||||
--- imlib2-1.4.6.orig/src/modules/loaders/loader_gif.c 2013-12-21 10:16:10.000000000 +0000
|
||||
+++ imlib2-1.4.6/src/modules/loaders/loader_gif.c 2014-05-27 09:52:35.857291512 +0000
|
||||
@@ -36,7 +36,7 @@
|
||||
#endif
|
||||
if (fd < 0)
|
||||
return 0;
|
||||
- gif = DGifOpenFileHandle(fd);
|
||||
+ gif = DGifOpenFileHandle(fd, NULL);
|
||||
if (!gif)
|
||||
{
|
||||
close(fd);
|
||||
@@ -60,13 +60,13 @@
|
||||
h = gif->Image.Height;
|
||||
if (!IMAGE_DIMENSIONS_OK(w, h))
|
||||
{
|
||||
- DGifCloseFile(gif);
|
||||
+ DGifCloseFile(gif, NULL);
|
||||
return 0;
|
||||
}
|
||||
rows = malloc(h * sizeof(GifRowType *));
|
||||
if (!rows)
|
||||
{
|
||||
- DGifCloseFile(gif);
|
||||
+ DGifCloseFile(gif, NULL);
|
||||
return 0;
|
||||
}
|
||||
for (i = 0; i < h; i++)
|
||||
@@ -78,7 +78,7 @@
|
||||
rows[i] = malloc(w * sizeof(GifPixelType));
|
||||
if (!rows[i])
|
||||
{
|
||||
- DGifCloseFile(gif);
|
||||
+ DGifCloseFile(gif, NULL);
|
||||
for (i = 0; i < h; i++)
|
||||
{
|
||||
if (rows[i])
|
||||
@@ -150,7 +150,7 @@
|
||||
im->data = (DATA32 *) malloc(sizeof(DATA32) * w * h);
|
||||
if (!im->data)
|
||||
{
|
||||
- DGifCloseFile(gif);
|
||||
+ DGifCloseFile(gif, NULL);
|
||||
free(rows);
|
||||
return 0;
|
||||
}
|
||||
@@ -181,7 +181,7 @@
|
||||
last_per = (int)per;
|
||||
if (!(progress(im, (int)per, 0, last_y, w, i)))
|
||||
{
|
||||
- DGifCloseFile(gif);
|
||||
+ DGifCloseFile(gif, NULL);
|
||||
for (i = 0; i < h; i++)
|
||||
{
|
||||
free(rows[i]);
|
||||
@@ -198,7 +198,7 @@
|
||||
{
|
||||
progress(im, 100, 0, last_y, w, h);
|
||||
}
|
||||
- DGifCloseFile(gif);
|
||||
+ DGifCloseFile(gif, NULL);
|
||||
for (i = 0; i < h; i++)
|
||||
{
|
||||
free(rows[i]);
|
Loading…
Reference in new issue