diff options
Diffstat (limited to 'graphics/meh/meh-giflib.patch')
-rw-r--r-- | graphics/meh/meh-giflib.patch | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/graphics/meh/meh-giflib.patch b/graphics/meh/meh-giflib.patch new file mode 100644 index 000000000000..b58dfd167d90 --- /dev/null +++ b/graphics/meh/meh-giflib.patch @@ -0,0 +1,81 @@ +diff -u -r meh-0.3/src/gif.c meh-0.3-git/src/gif.c +--- meh-0.3/src/gif.c 2010-01-04 17:45:01.000000000 +0000 ++++ meh-0.3-git/src/gif.c 2015-08-27 16:11:39.082286073 +0100 +@@ -32,7 +32,11 @@ + /* HACK HACK HACK */ + rewind(f); + lseek(fileno(f), 0L, SEEK_SET); ++#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 ++ if(!(gif = DGifOpenFileHandle(fileno(f), NULL))){ ++#else + if(!(gif = DGifOpenFileHandle(fileno(f)))){ ++#endif + /* HACK AND HOPE */ + rewind(f); + lseek(fileno(f), 0L, SEEK_SET); +@@ -55,11 +59,10 @@ + struct gif_t *g = (struct gif_t *)img; + GifColorType *colormap; + SavedImage *s; ++ int ret; + +- if(DGifSlurp(g->gif) == GIF_ERROR){ +- PrintGifError(); +- return 1; +- } ++ if((ret = DGifSlurp(g->gif)) != GIF_OK) ++ goto error; + + s = &g->gif->SavedImages[0]; + +@@ -67,10 +70,8 @@ + colormap = s->ImageDesc.ColorMap->Colors; + else if(g->gif->SColorMap) + colormap = g->gif->SColorMap->Colors; +- else{ +- PrintGifError(); +- return 1; +- } ++ else ++ goto error; + + for(i = 0; i < img->bufwidth * img->bufheight; i++){ + unsigned char idx = s->RasterBits[i]; +@@ -82,11 +83,37 @@ + img->state |= LOADED | SLOWLOADED; + + return 0; ++error: ++#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 ++ fprintf(stderr, "GIFLIB: %s\n", GifErrorString(ret)); ++#elif defined(GIFLIB_MAJOR) && defined(GIFLIB_MINOR) && ((GIFLIB_MAJOR == 4 && GIFLIB_MINOR >= 2) || GIFLIB_MAJOR > 4) ++ fprintf(stderr, "GIFLIB: %s\n", GifErrorString()); ++#else ++ PrintGifError(); ++#endif ++ return 1; + } + + void gif_close(struct image *img){ + struct gif_t *g = (struct gif_t *)img; ++#if defined(GIFLIB_MAJOR) && defined(GIFLIB_MINOR) && (GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1) ++ int ret; ++#endif ++ ++#if defined(GIFLIB_MAJOR) && defined(GIFLIB_MINOR) && (GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1) ++ DGifCloseFile(g->gif,&ret); ++ if(ret != GIF_OK) { ++#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 ++ fprintf(stderr, "GIFLIB: %s\n", GifErrorString(ret)); ++#elif defined(GIFLIB_MAJOR) && defined(GIFLIB_MINOR) && ((GIFLIB_MAJOR == 4 && GIFLIB_MINOR >= 2) || GIFLIB_MAJOR > 4) ++ fprintf(stderr, "GIFLIB: %s\n", GifErrorString()); ++#else ++ PrintGifError(); ++#endif ++ } ++#else + DGifCloseFile(g->gif); ++#endif + fclose(g->f); + } + |