From 0a9f8eb2720f608482a8d4f558294c5f9c88087c Mon Sep 17 00:00:00 2001 From: John Bowler Date: Thu, 9 Aug 2012 07:35:50 -0500 Subject: [PATCH] [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. --- ANNOUNCE | 11 +++++++++-- CHANGES | 9 ++++++++- pngpriv.h | 7 ++++++- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/ANNOUNCE b/ANNOUNCE index a16b10651..5e837e062 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -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 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. 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 use __restrict when GNUC is <= 3.1 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 (subscription required; visit diff --git a/CHANGES b/CHANGES index 9bc6271c3..967c389ef 100644 --- a/CHANGES +++ b/CHANGES @@ -4150,10 +4150,17 @@ Version 1.6.0beta26 [July 10, 2012] Moved scripts/chkfmt to contrib/tools. 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 use __restrict when GNUC is <= 3.1 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 (subscription required; visit diff --git a/pngpriv.h b/pngpriv.h index e09a10e4d..1bcb05728 100644 --- a/pngpriv.h +++ b/pngpriv.h @@ -170,12 +170,17 @@ * the functions will be used without definitions.) * * 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_FLOATING_POINT_SUPPORTED # define PNG_FP_EXPORT(ordinal, type, name, args)\ 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 #ifndef PNG_FIXED_EXPORT