Subject: pkg/33325: graphics/ImageMagick broken with new PNG
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <b1ff@fr33.b33r.net>
List: pkgsrc-bugs
Date: 04/21/2006 12:20:01
>Number:         33325
>Category:       pkg
>Synopsis:       graphics/ImageMagick broken with new PNG
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Apr 21 12:20:00 +0000 2006
>Originator:     Mathieu
>Release:        3.0.0_STABLE
>Organization:
>Environment:
NetBSD sal.lan 3.0.0_STABLE NetBSD 3.0.0_STABLE (SPECIFIC) #0: Sat Apr  8 22:19:10 EDT 2006  mathieu@sal.lan:/usr/src/sys/arch/i386/compile/SPECIFIC i386
>Description:
if /bin/sh ./libtool --silent --tag=CC --mode=compile cc -DHAVE_CONFIG_H -I. -I. -I./magick -I./wand  -I./ltdl -I./ltdl  -I/usr/pkg/include/freetype2 -I/usr/pkg/include -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/freetype2 -I/usr/pkg/gcc34/include -I/usr/pkg/xorg/include -I/usr/pkg/include/libxml2  -O2 -march=pentium4 -pipe -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/freetype2 -I/usr/pkg/gcc34/include -Wall -MT coders/magick_libMagick_la-png.lo -MD -MP -MF "coders/.deps/magick_libMagick_la-png.Tpo" -c -o coders/magick_libMagick_la-png.lo `test -f 'coders/png.c' || echo './'`coders/png.c; \
        then mv -f "coders/.deps/magick_libMagick_la-png.Tpo" "coders/.deps/magick_libMagick_la-png.Plo"; else rm -f "coders/.deps/magick_libMagick_la-png.Tpo"; exit 1; fi
coders/png.c: In function `ReadOnePNGImage':
coders/png.c:1758: warning: implicit declaration of function `png_access_version'
coders/png.c:1767: error: `png_ptr' undeclared (first use in this function)
coders/png.c:1767: error: (Each undeclared identifier is reported only once
coders/png.c:1767: error: for each function it appears in.)
gmake: *** [coders/magick_libMagick_la-png.lo] Error 1
*** Error code 2

>How-To-Repeat:
Happens when PNG is built with its PNGGCCRD optimization.

>Fix:
--- coders/png.c.orig   2006-03-24 14:45:40.000000000 -0500
+++ coders/png.c        2006-04-21 07:54:59.000000000 -0400
@@ -1755,7 +1755,7 @@
 #if defined(PNG_USE_PNGGCCRD) && defined(PNG_ASSEMBLER_CODE_SUPPORTED) \
 && (PNG_LIBPNG_VER >= 10200)
   /* Disable thread-unsafe features of pnggccrd */
-  if (png_access_version() >= 10200)
+  if (png_access_version_number() >= 10200)
   {
     png_uint_32 mmx_disable_mask=0;
     png_uint_32 asm_flags;
@@ -1764,8 +1764,8 @@
                         | PNG_ASM_FLAG_MMX_READ_FILTER_SUB   \
                         | PNG_ASM_FLAG_MMX_READ_FILTER_AVG   \
                         | PNG_ASM_FLAG_MMX_READ_FILTER_PAETH );
-    asm_flags=png_get_asm_flags(png_ptr);
-    png_set_asm_flags(png_ptr, asm_flags & ~mmx_disable_mask);
+    asm_flags=png_get_asm_flags(ping);
+    png_set_asm_flags(ping, asm_flags & ~mmx_disable_mask);
   }
 #endif

That chunk of code was taken literally from libpng(3), which also
contains the bogus call to png_access_version().