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)