[libpng16] Fixed configurations where floating point is completely disabled.

Because of the changes to support symbol prefixing PNG_INTERNAL_FUNCTION
declares floating point APIs during libpng builds even if they are completely
disabled. This requires the png floating point types (png_double*) to be
declared even though the functions are never actually defined.  This
change provides a dummy definition so that the declarations work, yet any
implementation will fail to compile because of an incomplete type.
This commit is contained in:
John Bowler 2012-08-09 07:35:50 -05:00 committed by Glenn Randers-Pehrson
parent cad0150d12
commit 0a9f8eb272
3 changed files with 23 additions and 4 deletions

View File

@ -1,5 +1,5 @@
Libpng 1.6.0beta27 - August 3, 2012 Libpng 1.6.0beta27 - August 9, 2012
This is not intended to be a public release. It will be replaced This is not intended to be a public release. It will be replaced
within a few weeks by a public version or by another test version. within a few weeks by a public version or by another test version.
@ -399,10 +399,17 @@ Version 1.6.0beta26 [July 10, 2012]
Moved scripts/chkfmt to contrib/tools. Moved scripts/chkfmt to contrib/tools.
Changed "a+w" to "u+w" in Makefile.in to fix CVE-2012-3386. Changed "a+w" to "u+w" in Makefile.in to fix CVE-2012-3386.
Version 1.6.0beta27 [August 3, 2012] Version 1.6.0beta27 [August 9, 2012]
Do not compile PNG_DEPRECATED, PNG_ALLOC and PNG_PRIVATE when __GNUC__ < 3. Do not compile PNG_DEPRECATED, PNG_ALLOC and PNG_PRIVATE when __GNUC__ < 3.
Do not use __restrict when GNUC is <= 3.1 Do not use __restrict when GNUC is <= 3.1
Removed references to png_zalloc() and png_zfree() from the manual. Removed references to png_zalloc() and png_zfree() from the manual.
Fixed configurations where floating point is completely disabled. Because
of the changes to support symbol prefixing PNG_INTERNAL_FUNCTION declares
floating point APIs during libpng builds even if they are completely
disabled. This requires the png floating point types (png_double*) to be
declared even though the functions are never actually defined. This
change provides a dummy definition so that the declarations work, yet any
implementation will fail to compile because of an incomplete type.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit (subscription required; visit

View File

@ -4150,10 +4150,17 @@ Version 1.6.0beta26 [July 10, 2012]
Moved scripts/chkfmt to contrib/tools. Moved scripts/chkfmt to contrib/tools.
Changed "a+w" to "u+w" in Makefile.in to fix CVE-2012-3386. Changed "a+w" to "u+w" in Makefile.in to fix CVE-2012-3386.
Version 1.6.0beta27 [August 3, 2012] Version 1.6.0beta27 [August 9, 2012]
Do not compile PNG_DEPRECATED, PNG_ALLOC and PNG_PRIVATE when __GNUC__ < 3. Do not compile PNG_DEPRECATED, PNG_ALLOC and PNG_PRIVATE when __GNUC__ < 3.
Do not use __restrict when GNUC is <= 3.1 Do not use __restrict when GNUC is <= 3.1
Removed references to png_zalloc() and png_zfree() from the manual. Removed references to png_zalloc() and png_zfree() from the manual.
Fixed configurations where floating point is completely disabled. Because
of the changes to support symbol prefixing PNG_INTERNAL_FUNCTION declares
floating point APIs during libpng builds even if they are completely
disabled. This requires the png floating point types (png_double*) to be
declared even though the functions are never actually defined. This
change provides a dummy definition so that the declarations work, yet any
implementation will fail to compile because of an incomplete type.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit (subscription required; visit

View File

@ -170,12 +170,17 @@
* the functions will be used without definitions.) * the functions will be used without definitions.)
* *
* NOTE: although all the API functions are declared here they are not all * NOTE: although all the API functions are declared here they are not all
* actually built! * actually built! Because the declarations are still made it is necessary to
* fake out types that they depend on.
*/ */
#ifndef PNG_FP_EXPORT #ifndef PNG_FP_EXPORT
# ifndef PNG_FLOATING_POINT_SUPPORTED # ifndef PNG_FLOATING_POINT_SUPPORTED
# define PNG_FP_EXPORT(ordinal, type, name, args)\ # define PNG_FP_EXPORT(ordinal, type, name, args)\
PNG_INTERNAL_FUNCTION(type, name, args, PNG_EMPTY); PNG_INTERNAL_FUNCTION(type, name, args, PNG_EMPTY);
typedef struct png_incomplete png_double;
typedef png_double* png_doublep;
typedef const png_double* png_const_doublep;
typedef png_double** png_doublepp;
# endif # endif
#endif #endif
#ifndef PNG_FIXED_EXPORT #ifndef PNG_FIXED_EXPORT