diff -ruN frmts/gif.orig/biggifdataset.cpp frmts/gif/biggifdataset.cpp
--- frmts/gif.orig/biggifdataset.cpp	2014-04-16 20:04:33.000000000 +0000
+++ frmts/gif/biggifdataset.cpp	2014-06-11 12:39:28.420405033 +0000
@@ -339,7 +339,11 @@
 /*      If the file is already open, close it so we can restart.        */
 /* -------------------------------------------------------------------- */
     if( hGifFile != NULL )
+#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 && GIFLIB_MINOR >= 1
+        DGifCloseFile( hGifFile, NULL );
+#else
         DGifCloseFile( hGifFile );
+#endif
 
 /* -------------------------------------------------------------------- */
 /*      If we are actually reopening, then we assume that access to     */
@@ -413,7 +417,11 @@
 
     if( RecordType != IMAGE_DESC_RECORD_TYPE )
     {
+#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 && GIFLIB_MINOR >= 1
+        DGifCloseFile( hGifFile, NULL );
+#else
         DGifCloseFile( hGifFile );
+#endif
         hGifFile = NULL;
 
         CPLError( CE_Failure, CPLE_OpenFailed, 
@@ -423,7 +431,11 @@
     
     if (DGifGetImageDesc(hGifFile) == GIF_ERROR)
     {
+#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 && GIFLIB_MINOR >= 1
+        DGifCloseFile( hGifFile, NULL );
+#else
         DGifCloseFile( hGifFile );
+#endif
         hGifFile = NULL;
 
         CPLError( CE_Failure, CPLE_OpenFailed, 
diff -ruN frmts/gif.orig/gifabstractdataset.cpp frmts/gif/gifabstractdataset.cpp
--- frmts/gif.orig/gifabstractdataset.cpp	2014-04-16 20:04:33.000000000 +0000
+++ frmts/gif/gifabstractdataset.cpp	2014-06-11 12:54:25.609072106 +0000
@@ -82,7 +82,11 @@
     }
 
     if( hGifFile )
+#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 && GIFLIB_MINOR >= 1
+        DGifCloseFile( hGifFile, NULL );
+#else
         DGifCloseFile( hGifFile );
+#endif
 
     if( fp != NULL )
         VSIFCloseL( fp );
diff -ruN frmts/gif.orig/gifdataset.cpp frmts/gif/gifdataset.cpp
--- frmts/gif.orig/gifdataset.cpp	2014-04-16 20:04:33.000000000 +0000
+++ frmts/gif/gifdataset.cpp	2014-06-11 12:45:37.318469917 +0000
@@ -386,13 +386,21 @@
             CPLDebug( "GIF",
                       "Due to limitations of the GDAL GIF driver we deliberately avoid\n"
                       "opening large GIF files (larger than 100 megapixels).");
+#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 && GIFLIB_MINOR >= 1
+            DGifCloseFile( hGifFile, NULL );
+#else
             DGifCloseFile( hGifFile );
+#endif
             VSIFCloseL( fp );
             return NULL;
         }
     }
 
+#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 && GIFLIB_MINOR >= 1
+    DGifCloseFile( hGifFile, NULL );
+#else
     DGifCloseFile( hGifFile );
+#endif
 
     VSIFSeekL( fp, 0, SEEK_SET);
 
@@ -417,7 +425,11 @@
     if( nGifErr != GIF_OK || hGifFile->SavedImages == NULL )
     {
         VSIFCloseL( fp );
+#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 && GIFLIB_MINOR >= 1
+        DGifCloseFile(hGifFile, NULL);
+#else
         DGifCloseFile(hGifFile);
+#endif
 
         if( nGifErr == D_GIF_ERR_DATA_TOO_BIG )
         {
@@ -649,7 +661,11 @@
     {
         GifFreeMapObject(psGifCT);
         GDALPrintGifError(hGifFile, "Error writing gif file.");
+#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 && GIFLIB_MINOR >= 1
+        EGifCloseFile(hGifFile, NULL);
+#else
         EGifCloseFile(hGifFile);
+#endif
         VSIFCloseL( fp );
         return NULL;
     }
@@ -673,7 +689,11 @@
     if (EGifPutImageDesc(hGifFile, 0, 0, nXSize, nYSize, bInterlace, NULL) == GIF_ERROR )
     {
         GDALPrintGifError(hGifFile, "Error writing gif file.");
+#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 && GIFLIB_MINOR >= 1
+        EGifCloseFile(hGifFile, NULL);
+#else
         EGifCloseFile(hGifFile);
+#endif
         VSIFCloseL( fp );
         return NULL;
     }
@@ -756,7 +776,11 @@
 /* -------------------------------------------------------------------- */
 /*      cleanup                                                         */
 /* -------------------------------------------------------------------- */
+#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 && GIFLIB_MINOR >= 1
+    if (EGifCloseFile(hGifFile, NULL) == GIF_ERROR)
+#else
     if (EGifCloseFile(hGifFile) == GIF_ERROR)
+#endif
     {
         CPLError( CE_Failure, CPLE_AppDefined, 
                   "EGifCloseFile() failed.\n" );
@@ -807,7 +831,11 @@
 
 error:
     if (hGifFile)
+#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5 && GIFLIB_MINOR >= 1
+        EGifCloseFile(hGifFile, NULL);
+#else
         EGifCloseFile(hGifFile);
+#endif
     if (fp)
         VSIFCloseL( fp );
     if (pabyScanline)