index e429830..c414f5b 100644
--- a/src/image.c
+++ b/src/image.c
-@@ -7219,14 +7219,22 @@ gif_image_p (Lisp_Object object)
+@@ -7219,14 +7219,23 @@ gif_image_p (Lisp_Object object)
#endif /* HAVE_NTGUI */
#ifdef WINDOWSNT
/* GIF library details. */
- DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *));
+-DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *));
DEF_IMGLIB_FN (int, DGifSlurp, (GifFileType *));
+#if GIFLIB_MAJOR < 5
++DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *));
DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc));
DEF_IMGLIB_FN (GifFileType *, DGifOpenFileName, (const char *));
+#else
++DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *, int *));
+DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc, int *));
+DEF_IMGLIB_FN (GifFileType *, DGifOpenFileName, (const char *, int *));
+#endif
static bool
init_gif_functions (void)
-@@ -7316,7 +7324,11 @@ gif_load (struct frame *f, struct image *img)
+@@ -7206,7 +7214,11 @@ gif_load (struct frame *f, struct image *img)
}
/* Open the GIF file. */
if (gif == NULL)
{
image_error ("Cannot open `%s'", file, Qnil);
-@@ -7337,7 +7349,11 @@ gif_load (struct frame *f, struct image *img)
+@@ -7227,7 +7239,11 @@ gif_load (struct frame *f, struct image *img)
memsrc.len = SBYTES (specified_data);
memsrc.index = 0;
if (!gif)
{
image_error ("Cannot open memory source `%s'", img->spec, Qnil);
+@@ -7241,7 +7242,11 @@
+ if (!check_image_size (f, gif->SWidth, gif->SHeight))
+ {
+ image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
++#if GIFLIB_MAJOR < 5
+ fn_DGifCloseFile (gif);
++#else
++ fn_DGifCloseFile (gif, NULL);
++#endif
+ return 0;
+ }
+
+@@ -7250,7 +7255,11 @@
+ if (rc == GIF_ERROR || gif->ImageCount <= 0)
+ {
+ image_error ("Error reading `%s'", img->spec, Qnil);
++#if GIFLIB_MAJOR < 5
+ fn_DGifCloseFile (gif);
++#else
++ fn_DGifCloseFile (gif, NULL);
++#endif
+ return 0;
+ }
+
+@@ -7262,7 +7271,11 @@
+ {
+ image_error ("Invalid image number `%s' in image `%s'",
+ image_number, img->spec);
++#if GIFLIB_MAJOR < 5
+ fn_DGifCloseFile (gif);
++#else
++ fn_DGifCloseFile (gif, NULL);
++#endif
+ return 0;
+ }
+ }
+@@ -7280,14 +7293,22 @@
+ if (!check_image_size (f, width, height))
+ {
+ image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
++#if GIFLIB_MAJOR < 5
+ fn_DGifCloseFile (gif);
++#else
++ fn_DGifCloseFile (gif, NULL);
++#endif
+ return 0;
+ }
+
+ /* Create the X image and pixmap. */
+ if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap))
+ {
++#if GIFLIB_MAJOR < 5
+ fn_DGifCloseFile (gif);
++#else
++ fn_DGifCloseFile (gif, NULL);
++#endif
+ return 0;
+ }
+
+@@ -7463,7 +7484,11 @@
+ Fcons (make_number (gif->ImageCount),
+ img->lisp_data));
+
++#if GIFLIB_MAJOR < 5
+ fn_DGifCloseFile (gif);
++#else
++ fn_DGifCloseFile (gif, NULL);
++#endif
+
+ /* Maybe fill in the background field while we have ximg handy. */
+ if (NILP (image_spec_value (img->spec, QCbackground, NULL)))