NetBSD Problem Report #48074

From www@NetBSD.org  Mon Jul 22 15:58:02 2013
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [149.20.53.66])
	(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
	(Client CN "mail.NetBSD.org", Issuer "Postmaster NetBSD.org" (verified OK))
	by mollari.NetBSD.org (Postfix) with ESMTPS id A3A3F70611
	for <gnats-bugs@gnats.NetBSD.org>; Mon, 22 Jul 2013 15:58:02 +0000 (UTC)
Message-Id: <20130722155801.14CD370628@mollari.NetBSD.org>
Date: Mon, 22 Jul 2013 15:58:01 +0000 (UTC)
From: ci4ic4@gmail.com
Reply-To: ci4ic4@gmail.com
To: gnats-bugs@NetBSD.org
Subject: libgdiplus fails build with the latest giflib
X-Send-Pr-Version: www-1.0

>Number:         48074
>Category:       pkg
>Synopsis:       libgdiplus fails build with the latest giflib
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kefren
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Jul 22 16:00:00 +0000 2013
>Closed-Date:    Sun May 24 16:28:52 +0000 2015
>Last-Modified:  Sun May 24 16:28:52 +0000 2015
>Originator:     Chavdar Ivanov
>Release:        6.99.23
>Organization:
Delcam Plc
>Environment:
NetBSD support6.delcam.local 6.99.23 NetBSD 6.99.23 (MINE) #16: Sat Jul 20 12:06:55 BST 2013  root@support6.delcam.local:/usr/src/sys/arch/amd64/compile/MINE amd64

>Description:
/bin/sh ../libtool --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/pkg/include/glib/glib-2.0 -I/usr/pkg/lib/glib-2.0/include -I/usr/pkg/include  -D_REENTRANT -I/usr/pkg/include/cairo -I/usr/X11R7/include/pixman-1 -I/usr/X11R7/include -I/usr/X11R7/include/freetype2 -I/usr/X11R7/include -I/usr/pkg/include/libpng16 -I/usr/X11R7/include   -I/usr/X11R7/include  -I/usr/X11R7/include/freetype2 -I/usr/X11R7/include  -D_REENTRANT -I/usr/X11R7/include  -Wall -Wno-unused -Wno-format  -I/usr/pkg/include -I/usr/include -I/usr/X11R7/include -I/usr/X11R7/include/libdrm -I/usr/X11R7/include/freetype2  -O2 -I/usr/pkg/include -I/usr/include -I/usr/X11R7/include -I/usr/X11R7/include/libdrm -I/usr/X11R7/include/freetype2 -pthread -MT gifcodec.lo -MD -MP -MF .deps/gifcodec.Tpo -c -o gifcodec.lo gifcodec.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/pkgsrc/graphics/libgdiplus/work/.buildlink/include/glib/glib-2.0 -I/usr/pkgsrc/graphics/libgdiplus/work/.buildlink/lib/glib-2.0/include -I/usr/pkgsrc/graphics/libgdiplus/work/.buildlink/include -D_REENTRANT -I/usr/pkgsrc/graphics/libgdiplus/work/.buildlink/include/cairo -I/usr/pkgsrc/graphics/libgdiplus/work/.x11-buildlink/include/pixman-1 -I/usr/pkgsrc/graphics/libgdiplus/work/.x11-buildlink/include -I/usr/pkgsrc/graphics/libgdiplus/work/.x11-buildlink/include/freetype2 -I/usr/pkgsrc/graphics/libgdiplus/work/.buildlink/include/libpng16 -Wall -Wno-unused -Wno-format -I/usr/pkgsrc/graphics/libgdiplus/work/.x11-buildlink/include/libdrm -O2 -pthread -MT gifcodec.lo -MD -MP -MF .deps/gifcodec.Tpo -c gifcodec.c  -fPIC -DPIC -o .libs/gifcodec.o
gifcodec.c: In function 'AddExtensionBlockMono':
gifcodec.c:129:12: warning: pointer targets in assignment differ in signedness
gifcodec.c:136:21: error: 'SavedImage' has no member named 'Function'
gifcodec.c: In function 'DGifSlurpMono':
gifcodec.c:239:45: error: 'SavedImage' has no member named 'Function'
gifcodec.c: In function 'gdip_save_gif_image':
gifcodec.c:982:3: warning: implicit declaration of function 'FreeMapObject'
gmake: *** [gifcodec.lo] Error 1


'Function' member was marked as "deprecated" in the include file of giflib v.4.1.6; it has been removed in the include file of the new giflib 5.0 package. Two references to SavedImage.Function exist in gifcodec.c . 
>How-To-Repeat:
Upgrade giflib to 5.0; try to build libgdiplus. 
>Fix:
N/A

>Release-Note:

>Audit-Trail:

Responsible-Changed-From-To: pkg-manager->kefren
Responsible-Changed-By: hauke@NetBSD.org
Responsible-Changed-When: Mon, 22 Jul 2013 19:50:53 +0000
Responsible-Changed-Why:
Over to maintainer.


From: Ryo ONODERA <ryo_on@yk.rim.or.jp>
To: gnats-bugs@NetBSD.org, ci4ic4@gmail.com
Cc: 
Subject: Re: pkg/48074: libgdiplus fails build with the latest giflib
Date: Tue, 23 Jul 2013 19:46:20 +0900 (JST)

 I have following patch, but I am not sure whether this patch is correct or not.
 I cannot understand gif's function yet.

 With this patch, Pinta from http://pinta-project.com/ works for me.



 $NetBSD: patch-src_gifcodec.c,v 1.1 2013/07/13 10:50:05 obache Exp $

 * fixes build with giflib>=5

 --- src/gifcodec.c.orig	2011-01-13 22:28:19.000000000 +0000
 +++ src/gifcodec.c
 @@ -39,8 +39,12 @@ GUID gdip_gif_image_format_guid = {0xb96

  #include "gifcodec.h"

 -/* giflib declares this incorrectly as EgifOpen */
 +/* giflib declares this incorrectly as EgifOpen up to 4.1.2
 +   GIF_LIB_VERSION is defined up to 4.1.6, and prototype is changed in 5.0,
 +   so it is safe to use it as check condition */
 +#ifdef GIF_LIB_VERSION
  extern GifFileType *EGifOpen(void *userData, OutputFunc writeFunc);
 +#endif

  /* Data structure used for callback */
  typedef struct
 @@ -129,7 +133,7 @@ AddExtensionBlockMono(SavedImage *New, i

  	if (ExtData) {
  		memcpy(ep->Bytes, ExtData, Len);
 -		ep->Function = New->Function;
 +		ep->Function = New->ExtensionBlocks[New->ExtensionBlockCount++].Function;
  	}

  	return (GIF_OK);
 @@ -232,7 +236,7 @@ DGifSlurpMono(GifFileType * GifFile, Sav
  			}

  			case EXTENSION_RECORD_TYPE: {
 -				if (DGifGetExtension(GifFile, &temp_save.Function, &ExtData) == GIF_ERROR) {
 +				if (DGifGetExtension(GifFile, &temp_save.ExtensionBlocks[temp_save.ExtensionBlockCount].Function, &ExtData) == GIF_ERROR) {
  					return (GIF_ERROR);
  				}

 @@ -245,7 +249,9 @@ DGifSlurpMono(GifFileType * GifFile, Sav
  					if (DGifGetExtensionNext(GifFile, &ExtData) == GIF_ERROR) {
  						return (GIF_ERROR);
  					}
 +#if GIFLIB_MAJOR < 5
  					temp_save.Function = 0;
 +#endif
  				}
  				break;
  			}
 @@ -304,9 +310,17 @@ gdip_load_gif_image (void *stream, GpIma
  	loop_counter = FALSE;

  	if (from_file) {
 +#if GIFLIB_MAJOR >= 5
 +		gif = DGifOpen(stream, &gdip_gif_fileinputfunc, NULL);
 +#else 
  		gif = DGifOpen(stream, &gdip_gif_fileinputfunc);
 +#endif
  	} else {
 +#if GIFLIB_MAJOR >= 5
 +		gif = DGifOpen (stream, &gdip_gif_inputfunc, NULL);
 +#else
  		gif = DGifOpen (stream, &gdip_gif_inputfunc);
 +#endif
  	}

  	if (gif == NULL) {
 @@ -662,9 +676,17 @@ gdip_save_gif_image (void *stream, GpIma
  	}

  	if (from_file) {
 +#if GIFLIB_MAJOR >= 5
 +		fp = EGifOpenFileName (stream, 0, NULL);
 +#else
  		fp = EGifOpenFileName (stream, 0);
 +#endif
  	} else {
 +#if GIFLIB_MAJOR >= 5
 +		fp = EGifOpen (stream, gdip_gif_outputfunc, NULL);
 +#else
  		fp = EGifOpen (stream, gdip_gif_outputfunc);
 +#endif
  	}

  	if (!fp) {
 @@ -703,7 +725,11 @@ gdip_save_gif_image (void *stream, GpIma
  					goto error; 
  				}

 +#if GIFLIB_MAJOR >= 5
 +				cmap = GifMakeMapObject(cmap_size, 0);
 +#else
  				cmap = MakeMapObject(cmap_size, 0);
 +#endif

  				pixbuf = GdipAlloc(pixbuf_size);
  				if (pixbuf == NULL) {
 @@ -794,7 +820,11 @@ gdip_save_gif_image (void *stream, GpIma
  				pixbuf = pixbuf_org;
  			} else {
  				cmap_size = 256;
 +#if GIFLIB_MAJOR >= 5
 +				cmap  = GifMakeMapObject (cmap_size, 0);
 +#else
  				cmap  = MakeMapObject (cmap_size, 0);
 +#endif

  				red = GdipAlloc(pixbuf_size);
  				green = GdipAlloc(pixbuf_size);
 @@ -825,13 +855,21 @@ gdip_save_gif_image (void *stream, GpIma
  						v += 4;
  					}
  				}
 +#if GIFLIB_MAJOR >= 5
 +				if (GifQuantizeBuffer(bitmap_data->width, bitmap_data->height, &cmap_size, 
 +#else
  				if (QuantizeBuffer(bitmap_data->width, bitmap_data->height, &cmap_size, 
 +#endif
  						red,  green, blue, pixbuf, cmap->Colors) == GIF_ERROR) {
  					goto error;
  				}
  			}

 +#if GIFLIB_MAJOR >= 5
 +			cmap->BitsPerPixel = GifBitSize (cmap_size);
 +#else
  			cmap->BitsPerPixel = BitSize (cmap_size);
 +#endif
  			cmap->ColorCount = 1 << cmap->BitsPerPixel;

  			if ((frame == 0) && (k == 0)) {
 @@ -849,8 +887,15 @@ gdip_save_gif_image (void *stream, GpIma
  						Buffer[0] = 1;
  						Buffer[1] = ptr[0];
  						Buffer[2] = ptr[1];
 +#if GIFLIB_MAJOR >= 5
 +						EGifPutExtensionLeader(fp, APPLICATION_EXT_FUNC_CODE);
 +						EGifPutExtensionBlock(fp, 11, "NETSCAPE2.0");
 +						EGifPutExtensionBlock(fp, 3, Buffer);
 +						EGifPutExtensionTrailer(fp);
 +#else
  						EGifPutExtensionFirst(fp, APPLICATION_EXT_FUNC_CODE, 11, "NETSCAPE2.0");
  						EGifPutExtensionLast(fp, APPLICATION_EXT_FUNC_CODE, 3, Buffer);
 +#endif
  					}
  				}

 @@ -902,7 +947,11 @@ gdip_save_gif_image (void *stream, GpIma
  				pixbuf += bitmap_data->width;
  			}

 +#if GIFLIB_MAJOR >= 5
 +			GifFreeMapObject (cmap);
 +#else
  			FreeMapObject (cmap);
 +#endif
  			if (red != NULL) {
  				GdipFree (red);
  			}
 @@ -930,7 +979,11 @@ gdip_save_gif_image (void *stream, GpIma

  error:
  	if (cmap != NULL) {
 +#if GIFLIB_MAJOR >= 5
 +		GifFreeMapObject (cmap);
 +#else
  		FreeMapObject (cmap);
 +#endif
  	}

  	if (red != NULL) {

 --
 Ryo ONODERA // ryo_on@yk.rim.or.jp
 PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1 15F3

From: Mihai Chelaru <kefren@NetBSD.org>
To: gnats-bugs@netbsd.org
Cc: gnats-admin@netbsd.org, pkgsrc-bugs@netbsd.org, ci4ic4@gmail.com
Subject: Re: pkg/48074: libgdiplus fails build with the latest giflib
Date: Tue, 23 Jul 2013 16:08:21 +0300

 Hi,

 Any reason why not using GIFLIB_MAJOR everywhere in this patch instead
 of checking for GIF_LIB_VERSION (@39) and the other couple of places
 @192, @232 ?

 I'm not a GIF expert myself, but the changeset looks ok to me, so if
 it works for you and PR reporter please commit it.

 Thank you !

From: "OBATA Akio" <obache@netbsd.org>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: pkg/48074: libgdiplus fails build with the latest giflib
Date: Tue, 23 Jul 2013 22:23:47 +0900

 On Tue, 23 Jul 2013 22:10:01 +0900, Mihai Chelaru <kefren@netbsd.org> wrote:

 >  Any reason why not using GIFLIB_MAJOR everywhere in this patch instead
 >  of checking for GIF_LIB_VERSION (@39) and the other couple of places
 >  @192, @232 ?

 GIF_LIB_VERSION is defined in 4.1.6 and prior.
 GIFLIB_MAJOR is defined after 4.1.6 (include 4.2.x).

 Then...
 GIF_LIB_VERSION must be used for version check before 4.1.6,
 GIFLIB_MAJOR must be used for version check after 4.1.6.

 >  I'm not a GIF expert myself, but the changeset looks ok to me, so if
 >  it works for you and PR reporter please commit it.

 Me too.
 I've patched some of them, and I'm not sure those are correct or not.

 Here are some information about `Forward and Backward Compatibility' of giflib:
   http://giflib.sourceforge.net/gif_lib.html#compatibility

 -- 
 OBATA Akio / obache@NetBSD.org

From: "OBATA Akio" <obache@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/48074 CVS commit: pkgsrc/graphics/libgdiplus
Date: Thu, 19 Sep 2013 11:53:56 +0000

 Module Name:	pkgsrc
 Committed By:	obache
 Date:		Thu Sep 19 11:53:56 UTC 2013

 Modified Files:
 	pkgsrc/graphics/libgdiplus: distinfo
 	pkgsrc/graphics/libgdiplus/patches: patch-src_gifcodec.c

 Log Message:
 apply rest of giflib>=5.0 compatibilitiy patch from PR pkg/48074


 To generate a diff of this commit:
 cvs rdiff -u -r1.33 -r1.34 pkgsrc/graphics/libgdiplus/distinfo
 cvs rdiff -u -r1.1 -r1.2 \
     pkgsrc/graphics/libgdiplus/patches/patch-src_gifcodec.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: open->feedback
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Mon, 30 Dec 2013 00:30:15 +0000
State-Changed-Why:
Is this fixed?


From: Chavdar Ivanov <ci4ic4@gmail.com>
To: "gnats-bugs@netbsd.org" <gnats-bugs@netbsd.org>
Cc: kefren@netbsd.org, pkgsrc-bugs@netbsd.org, 
	"gnats-admin@netbsd.org" <gnats-admin@netbsd.org>, David Holland <dholland@netbsd.org>
Subject: Re: pkg/48074 (libgdiplus fails build with the latest giflib)
Date: Mon, 30 Dec 2013 12:00:55 +0000

 Apparently yes - now I have

 # pkg_info | egrep 'giflib|libgdiplus'
 giflib-5.0.5        GIF image format library
 libgdiplus-2.10nb12 Implementation of the GDI+ API

 compiled yesterday under fresh mad64 -current.

 Chavdar


 On 30 December 2013 00:30,  <dholland@netbsd.org> wrote:
 > Synopsis: libgdiplus fails build with the latest giflib
 >
 > State-Changed-From-To: open->feedback
 > State-Changed-By: dholland@NetBSD.org
 > State-Changed-When: Mon, 30 Dec 2013 00:30:15 +0000
 > State-Changed-Why:
 > Is this fixed?
 >
 >
 >



 -- 
 ----

State-Changed-From-To: feedback->closed
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Mon, 30 Dec 2013 19:41:10 +0000
State-Changed-Why:
confirmed fixed, thanks.


From: Onno van der Linden <o.vd.linden@quicknet.nl>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: pkg/48074 (libgdiplus fails build with the latest giflib)
Date: Sun, 5 Jan 2014 15:30:52 +0100

 Yes it compiles. But it can cause a crash due to calling
 DGifGetExtension() with 
 &temp_save.ExtensionBlocks[temp_save.ExtensionBlockCount].Function
 as the second parameter.

 If the ExtensionBlocks pointer is NULL .........

 Here's one line from a mono stack trace and some debug output
 with some printfs in libgdiplus' DGifSlurpMono() and in
 giflib's DGifGetExtension()

 $ mono /usr/local/CUETools_2.1.5/CUETools.exe 
 ExtensionBlockCount = 0 ExtensionBlocks = 0x0 <----------
 GifFile = 0xb9595380 ExtCode = 0x8 Extension = 0xbfbfd8d8
 Before IS_READABLE
 Before READ
 Before *ExtCode
 Stacktrace:

   at (wrapper managed-to-native) System.Drawing.GDIPlus.GdipLoadImageFromDelegate_linux (System.Drawing.GDIPlus/StreamGetHeaderDelegate,System.Drawing.GDIPlus/StreamGetBytesDelegate,System.Drawing.GDIPlus/StreamPutBytesDelegate,System.Drawing.GDIPlus/StreamSeekDelegate,System.Drawing.GDIPlus/StreamCloseDelegate,System.Drawing.GDIPlus/StreamSizeDelegate,intptr&) <0xffffffff>

 Here's the (complete) gifcodec diff which seems to work for me:


 --- gifcodec.c.orig	2011-01-13 23:28:19.000000000 +0100
 +++ gifcodec.c	2014-01-05 15:23:43.000000000 +0100
 @@ -39,8 +39,12 @@

  #include "gifcodec.h"

 -/* giflib declares this incorrectly as EgifOpen */
 +/* giflib declares this incorrectly as EgifOpen up to 4.1.2
 +   GIF_LIB_VERSION is defined up to 4.1.6, and prototype is changed in 5.0,
 +   so it is safe to use it as check condition */
 +#ifdef GIF_LIB_VERSION
  extern GifFileType *EGifOpen(void *userData, OutputFunc writeFunc);
 +#endif

  /* Data structure used for callback */
  typedef struct
 @@ -105,7 +109,7 @@
  */

  static int
 -AddExtensionBlockMono(SavedImage *New, int Len, BYTE ExtData[])
 +AddExtensionBlockMono(SavedImage *New, int ExtCode, int Len, BYTE ExtData[])
  {
  	ExtensionBlock	*ep;

 @@ -129,7 +133,7 @@

  	if (ExtData) {
  		memcpy(ep->Bytes, ExtData, Len);
 -		ep->Function = New->Function;
 +		ep->Function = ExtCode;
  	}

  	return (GIF_OK);
 @@ -232,20 +236,31 @@
  			}

  			case EXTENSION_RECORD_TYPE: {
 +#if GIFLIB_MAJOR >= 5
 +				int ExtCode;
 +				if (DGifGetExtension(GifFile, &ExtCode, &ExtData) == GIF_ERROR) {
 +#else
  				if (DGifGetExtension(GifFile, &temp_save.Function, &ExtData) == GIF_ERROR) {
 +#endif
  					return (GIF_ERROR);
  				}

  				while (ExtData != NULL) {
  					/* Create an extension block with our data */
 -					if (AddExtensionBlockMono(&temp_save, ExtData[0], &ExtData[1]) == GIF_ERROR) {
 +#if GIFLIB_MAJOR >= 5
 +					if (AddExtensionBlockMono(&temp_save, ExtCode, ExtData[0], &ExtData[1]) == GIF_ERROR) {
 +#else
 +					if (AddExtensionBlockMono(&temp_save, temp_save.Function  ExtData[0], &ExtData[1]) == GIF_ERROR) {
 +#endif
  						return (GIF_ERROR);
  					}

  					if (DGifGetExtensionNext(GifFile, &ExtData) == GIF_ERROR) {
  						return (GIF_ERROR);
  					}
 +#if GIFLIB_MAJOR < 5
  					temp_save.Function = 0;
 +#endif
  				}
  				break;
  			}
 @@ -304,9 +319,17 @@
  	loop_counter = FALSE;

  	if (from_file) {
 +#if GIFLIB_MAJOR >= 5
 +		gif = DGifOpen(stream, &gdip_gif_fileinputfunc, NULL);
 +#else 
  		gif = DGifOpen(stream, &gdip_gif_fileinputfunc);
 +#endif
  	} else {
 +#if GIFLIB_MAJOR >= 5
 +		gif = DGifOpen (stream, &gdip_gif_inputfunc, NULL);
 +#else
  		gif = DGifOpen (stream, &gdip_gif_inputfunc);
 +#endif
  	}

  	if (gif == NULL) {
 @@ -662,9 +685,17 @@
  	}

  	if (from_file) {
 +#if GIFLIB_MAJOR >= 5
 +		fp = EGifOpenFileName (stream, 0, NULL);
 +#else
  		fp = EGifOpenFileName (stream, 0);
 +#endif
  	} else {
 +#if GIFLIB_MAJOR >= 5
 +		fp = EGifOpen (stream, gdip_gif_outputfunc, NULL);
 +#else
  		fp = EGifOpen (stream, gdip_gif_outputfunc);
 +#endif
  	}

  	if (!fp) {
 @@ -703,7 +734,11 @@
  					goto error; 
  				}

 +#if GIFLIB_MAJOR >= 5
 +				cmap = GifMakeMapObject(cmap_size, 0);
 +#else
  				cmap = MakeMapObject(cmap_size, 0);
 +#endif

  				pixbuf = GdipAlloc(pixbuf_size);
  				if (pixbuf == NULL) {
 @@ -794,7 +829,11 @@
  				pixbuf = pixbuf_org;
  			} else {
  				cmap_size = 256;
 +#if GIFLIB_MAJOR >= 5
 +				cmap  = GifMakeMapObject (cmap_size, 0);
 +#else
  				cmap  = MakeMapObject (cmap_size, 0);
 +#endif

  				red = GdipAlloc(pixbuf_size);
  				green = GdipAlloc(pixbuf_size);
 @@ -825,13 +864,21 @@
  						v += 4;
  					}
  				}
 +#if GIFLIB_MAJOR >= 5
 +				if (GifQuantizeBuffer(bitmap_data->width, bitmap_data->height, &cmap_size, 
 +#else
  				if (QuantizeBuffer(bitmap_data->width, bitmap_data->height, &cmap_size, 
 +#endif
  						red,  green, blue, pixbuf, cmap->Colors) == GIF_ERROR) {
  					goto error;
  				}
  			}

 +#if GIFLIB_MAJOR >= 5
 +			cmap->BitsPerPixel = GifBitSize (cmap_size);
 +#else
  			cmap->BitsPerPixel = BitSize (cmap_size);
 +#endif
  			cmap->ColorCount = 1 << cmap->BitsPerPixel;

  			if ((frame == 0) && (k == 0)) {
 @@ -849,8 +896,15 @@
  						Buffer[0] = 1;
  						Buffer[1] = ptr[0];
  						Buffer[2] = ptr[1];
 +#if GIFLIB_MAJOR >= 5
 +						EGifPutExtensionLeader(fp, APPLICATION_EXT_FUNC_CODE);
 +						EGifPutExtensionBlock(fp, 11, "NETSCAPE2.0");
 +						EGifPutExtensionBlock(fp, 3, Buffer);
 +						EGifPutExtensionTrailer(fp);
 +#else
  						EGifPutExtensionFirst(fp, APPLICATION_EXT_FUNC_CODE, 11, "NETSCAPE2.0");
  						EGifPutExtensionLast(fp, APPLICATION_EXT_FUNC_CODE, 3, Buffer);
 +#endif
  					}
  				}

 @@ -902,7 +956,11 @@
  				pixbuf += bitmap_data->width;
  			}

 +#if GIFLIB_MAJOR >= 5
 +			GifFreeMapObject (cmap);
 +#else
  			FreeMapObject (cmap);
 +#endif
  			if (red != NULL) {
  				GdipFree (red);
  			}
 @@ -930,7 +988,11 @@

  error:
  	if (cmap != NULL) {
 +#if GIFLIB_MAJOR >= 5
 +		GifFreeMapObject (cmap);
 +#else
  		FreeMapObject (cmap);
 +#endif
  	}

  	if (red != NULL) {

State-Changed-From-To: closed->open
State-Changed-By: obache@NetBSD.org
State-Changed-When: Tue, 07 Jan 2014 22:39:53 +0000
State-Changed-Why:
need more paches to fix runtime error


From: "Mihai Chelaru" <kefren@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/48074 CVS commit: pkgsrc/graphics/libgdiplus
Date: Sat, 23 May 2015 11:52:46 +0000

 Module Name:	pkgsrc
 Committed By:	kefren
 Date:		Sat May 23 11:52:46 UTC 2015

 Modified Files:
 	pkgsrc/graphics/libgdiplus: Makefile distinfo
 	pkgsrc/graphics/libgdiplus/patches: patch-src_gifcodec.c

 Log Message:
 Add gif patch from PR/48074
 PKGREVISION++


 To generate a diff of this commit:
 cvs rdiff -u -r1.74 -r1.75 pkgsrc/graphics/libgdiplus/Makefile
 cvs rdiff -u -r1.37 -r1.38 pkgsrc/graphics/libgdiplus/distinfo
 cvs rdiff -u -r1.4 -r1.5 \
     pkgsrc/graphics/libgdiplus/patches/patch-src_gifcodec.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: open->closed
State-Changed-By: kefren@NetBSD.org
State-Changed-When: Sun, 24 May 2015 16:28:52 +0000
State-Changed-Why:
Fixed in libgdiplus-3.12nb1


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2014 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.