/****************************************************************************** * This routine should be called last, to close the GIF file. * ******************************************************************************/ int DGifCloseFile(GifFileType *GifFile) { GifFilePrivateType *Private; FILE *File; if (GifFile == NULL) return GIF_ERROR; Private = (GifFilePrivateType *) GifFile->Private; if (!IS_READABLE(Private)) { /* This file was NOT open for reading: */ _GifError = D_GIF_ERR_NOT_READABLE; return GIF_ERROR; } File = Private->File; if (GifFile->Image.ColorMap) FreeMapObject(GifFile->Image.ColorMap); if (GifFile->SColorMap) FreeMapObject(GifFile->SColorMap); if (Private) free((char *) Private); if (GifFile->SavedImages) FreeSavedImages(GifFile); free(GifFile); if ( File && (fclose(File) != 0)) { _GifError = D_GIF_ERR_CLOSE_FAILED; return GIF_ERROR; } return GIF_OK; }
/****************************************************************************** * This routine should be called last, to close the GIF file. *****************************************************************************/ int DGifCloseFile(GifFileType * GifFile) { GifFilePrivateType *Private; if (GifFile == NULL) return GIF_ERROR; Private = GifFile->Private; if (GifFile->Image.ColorMap) { FreeMapObject(GifFile->Image.ColorMap); GifFile->Image.ColorMap = NULL; } if (GifFile->SColorMap) { FreeMapObject(GifFile->SColorMap); GifFile->SColorMap = NULL; } ungif_free(Private); Private = NULL; if (GifFile->SavedImages) { FreeSavedImages(GifFile); GifFile->SavedImages = NULL; } FreeExtension(&GifFile->Extensions); ungif_free(GifFile); return GIF_OK; }
static int DGifCloseFile(GifFileType * GifFile) { GifFilePrivateType *Private; FILE *File; if (GifFile == NULL) return GIF_ERROR; Private = (GifFilePrivateType *) GifFile->Private; if (!IS_READABLE(Private)) { _GifError = D_GIF_ERR_NOT_READABLE; return GIF_ERROR; } File = Private->File; if (GifFile->Image.ColorMap) { FreeMapObject(GifFile->Image.ColorMap); GifFile->Image.ColorMap = NULL; } if (GifFile->SColorMap) { FreeMapObject(GifFile->SColorMap); GifFile->SColorMap = NULL; } if (Private) { gif_free((char *) Private); Private = NULL; } if (GifFile->SavedImages) { FreeSavedImages(GifFile); GifFile->SavedImages = NULL; } gif_free(GifFile); if (File && (fclose(File) != 0)) { _GifError = D_GIF_ERR_CLOSE_FAILED; return GIF_ERROR; } return GIF_OK; }
/****************************************************************************** * This routine should be called last, to close the GIF file. * ******************************************************************************/ int DGifCloseFile(GifFileType *GifFile) { GifFilePrivateType *Private; FILE *File; int ret = GIF_OK; if (GifFile == NULL) return GIF_ERROR; Private = (GifFilePrivateType *) GifFile->Private; if (!IS_READABLE(Private)) { /* This file was NOT open for reading: */ _GifError = D_GIF_ERR_NOT_READABLE; ret = GIF_ERROR; /* we have to free everything regardless */ } File = Private->File; if (GifFile->Image.ColorMap) { FreeMapObject(GifFile->Image.ColorMap); GifFile->Image.ColorMap = NULL; } if (GifFile->SColorMap) { FreeMapObject(GifFile->SColorMap); GifFile->SColorMap = NULL; } if (Private) { free((char *) Private); GifFile->Private = NULL; } if (GifFile->SavedImages) { FreeSavedImages(GifFile); GifFile->SavedImages = NULL; } free(GifFile); if ( File && (fclose(File) != 0)) { _GifError = D_GIF_ERR_CLOSE_FAILED; ret = GIF_ERROR; } return ret; }
void GifFree(GifFileType * GifFile) { GifFilePrivateType *Private; if (GifFile == NULL) return; Private = (GifFilePrivateType *) GifFile->Private; if (GifFile->SavedImages) FreeSavedImages(GifFile); if (GifFile->Image.ColorMap) FreeMapObject(GifFile->Image.ColorMap); if (GifFile->SColorMap) FreeMapObject(GifFile->SColorMap); if (Private) { free(Private); } if (GifFile->GifIO) free(GifFile->GifIO); free(GifFile); }