Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff -urpN libgdiplus-3.12.orig/src/gifcodec.c libgdiplus-3.12/src/gifcodec.c
- --- libgdiplus-3.12.orig/src/gifcodec.c 2016-01-14 00:55:23.067332449 -0800
- +++ libgdiplus-3.12/src/gifcodec.c 2016-01-14 01:03:38.271799157 -0800
- @@ -326,11 +326,6 @@ QuantizeBuffer(unsigned int Width,
- return GIF_OK;
- }
- -#ifdef EgifOpen
- -/* giflib declares this incorrectly as EgifOpen */
- -extern GifFileType *EGifOpen(void *userData, OutputFunc writeFunc);
- -#endif
- -
- /* Data structure used for callback */
- typedef struct
- {
- @@ -394,7 +389,7 @@ gdip_gif_inputfunc (GifFileType *gif, Gi
- */
- static int
- -AddExtensionBlockMono(SavedImage *New, int Len, BYTE ExtData[])
- +AddExtensionBlockMono(SavedImage *New, int Function, int Len, BYTE ExtData[])
- {
- ExtensionBlock *ep;
- @@ -410,15 +405,15 @@ AddExtensionBlockMono(SavedImage *New, i
- ep = &New->ExtensionBlocks[New->ExtensionBlockCount++];
- + ep->Function = Function;
- ep->ByteCount=Len;
- - ep->Bytes = (char *)GdipAlloc(ep->ByteCount);
- + ep->Bytes = (GifByteType *)GdipAlloc(ep->ByteCount);
- if (ep->Bytes == NULL) {
- return (GIF_ERROR);
- }
- if (ExtData) {
- memcpy(ep->Bytes, ExtData, Len);
- - ep->Function = New->Function;
- }
- return (GIF_OK);
- @@ -455,6 +450,7 @@ static int
- DGifSlurpMono(GifFileType * GifFile, SavedImage *TrailingExtensions)
- {
- int ImageSize;
- + int Function;
- GifRecordType RecordType;
- SavedImage *sp;
- GifByteType *ExtData;
- @@ -521,20 +517,19 @@ DGifSlurpMono(GifFileType * GifFile, Sav
- }
- case EXTENSION_RECORD_TYPE: {
- - if (DGifGetExtension(GifFile, &temp_save.Function, &ExtData) == GIF_ERROR) {
- + if (DGifGetExtension(GifFile, &Function, &ExtData) == GIF_ERROR) {
- return (GIF_ERROR);
- }
- while (ExtData != NULL) {
- /* Create an extension block with our data */
- - if (AddExtensionBlockMono(&temp_save, ExtData[0], &ExtData[1]) == GIF_ERROR) {
- + if (AddExtensionBlockMono(&temp_save, Function, ExtData[0], &ExtData[1]) == GIF_ERROR) {
- return (GIF_ERROR);
- }
- if (DGifGetExtensionNext(GifFile, &ExtData) == GIF_ERROR) {
- return (GIF_ERROR);
- }
- - temp_save.Function = 0;
- }
- break;
- }
- @@ -593,9 +588,9 @@ gdip_load_gif_image (void *stream, GpIma
- loop_counter = FALSE;
- if (from_file) {
- - gif = DGifOpen(stream, &gdip_gif_fileinputfunc);
- + gif = DGifOpen(stream, &gdip_gif_fileinputfunc, NULL);
- } else {
- - gif = DGifOpen (stream, &gdip_gif_inputfunc);
- + gif = DGifOpen (stream, &gdip_gif_inputfunc, NULL);
- }
- if (gif == NULL) {
- @@ -870,7 +865,11 @@ gdip_load_gif_image (void *stream, GpIma
- }
- FreeExtensionMono(&global_extensions);
- +#if (GIFLIB_MAJOR > 5) || ((GIFLIB_MAJOR == 5) && (GIFLIB_MINOR >= 1))
- + DGifCloseFile (gif, NULL);
- +#else
- DGifCloseFile (gif);
- +#endif
- *image = result;
- return Ok;
- @@ -886,7 +885,11 @@ error:
- if (gif != NULL) {
- FreeExtensionMono (&global_extensions);
- +#if (GIFLIB_MAJOR > 5) || ((GIFLIB_MAJOR == 5) && (GIFLIB_MINOR >= 1))
- + DGifCloseFile (gif, NULL);
- +#else
- DGifCloseFile (gif);
- +#endif
- }
- *image = NULL;
- @@ -950,9 +953,9 @@ gdip_save_gif_image (void *stream, GpIma
- }
- if (from_file) {
- - fp = EGifOpenFileName (stream, 0);
- + fp = EGifOpenFileName (stream, 0, NULL);
- } else {
- - fp = EGifOpen (stream, gdip_gif_outputfunc);
- + fp = EGifOpen (stream, gdip_gif_outputfunc, NULL);
- }
- if (!fp) {
- @@ -991,7 +994,7 @@ gdip_save_gif_image (void *stream, GpIma
- goto error;
- }
- - cmap = MakeMapObject(cmap_size, 0);
- + cmap = GifMakeMapObject(cmap_size, 0);
- pixbuf = GdipAlloc(pixbuf_size);
- if (pixbuf == NULL) {
- @@ -1082,7 +1085,7 @@ gdip_save_gif_image (void *stream, GpIma
- pixbuf = pixbuf_org;
- } else {
- cmap_size = 256;
- - cmap = MakeMapObject (cmap_size, 0);
- + cmap = GifMakeMapObject (cmap_size, 0);
- red = GdipAlloc(pixbuf_size);
- green = GdipAlloc(pixbuf_size);
- @@ -1113,13 +1116,13 @@ gdip_save_gif_image (void *stream, GpIma
- v += 4;
- }
- }
- - if (QuantizeBuffer(bitmap_data->width, bitmap_data->height, &cmap_size,
- + if (GifQuantizeBuffer(bitmap_data->width, bitmap_data->height, &cmap_size,
- red, green, blue, pixbuf, cmap->Colors) == GIF_ERROR) {
- goto error;
- }
- }
- - cmap->BitsPerPixel = BitSize (cmap_size);
- + cmap->BitsPerPixel = GifBitSize (cmap_size);
- cmap->ColorCount = 1 << cmap->BitsPerPixel;
- if ((frame == 0) && (k == 0)) {
- @@ -1137,8 +1140,10 @@ gdip_save_gif_image (void *stream, GpIma
- Buffer[0] = 1;
- Buffer[1] = ptr[0];
- Buffer[2] = ptr[1];
- - EGifPutExtensionFirst(fp, APPLICATION_EXT_FUNC_CODE, 11, "NETSCAPE2.0");
- - EGifPutExtensionLast(fp, APPLICATION_EXT_FUNC_CODE, 3, Buffer);
- + EGifPutExtensionLeader(fp, APPLICATION_EXT_FUNC_CODE);
- + EGifPutExtensionBlock(fp, 11, "NETSCAPE2.0");
- + EGifPutExtensionBlock(fp, 3, Buffer);
- + EGifPutExtensionTrailer(fp);
- }
- }
- @@ -1190,7 +1195,7 @@ gdip_save_gif_image (void *stream, GpIma
- pixbuf += bitmap_data->width;
- }
- - FreeMapObject (cmap);
- + GifFreeMapObject (cmap);
- if (red != NULL) {
- GdipFree (red);
- }
- @@ -1212,13 +1217,17 @@ gdip_save_gif_image (void *stream, GpIma
- }
- }
- +#if (GIFLIB_MAJOR > 5) || ((GIFLIB_MAJOR == 5) && (GIFLIB_MINOR >= 1))
- + EGifCloseFile (fp, NULL);
- +#else
- EGifCloseFile (fp);
- -
- +#endif
- +
- return Ok;
- error:
- if (cmap != NULL) {
- - FreeMapObject (cmap);
- + GifFreeMapObject (cmap);
- }
- if (red != NULL) {
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement