[libpng16] Revert recent pngvalid.c changes and define FE_DIVBYZERO, etc.,

if not already defined.
This commit is contained in:
Glenn Randers-Pehrson 2014-09-18 16:41:40 -05:00
parent 77145bf678
commit 551019baf6
3 changed files with 23 additions and 15 deletions

View File

@ -43,6 +43,9 @@ Version 1.6.14beta02 [September 18, 2014]
at users.sourceforge.net"). at users.sourceforge.net").
Version 1.6.14beta03 [September 18, 2014] Version 1.6.14beta03 [September 18, 2014]
Define FE_DIVBYZERO, FE_INVALID, and FE_OVERFLOW in pngvalid.c if not
already defined. Revert floating point exception handling to version
1.6.14beta01 behavior.
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

@ -4996,6 +4996,9 @@ Version 1.6.14beta02 [September 18, 2014]
at users.sourceforge.net"). at users.sourceforge.net").
Version 1.6.14beta03 [September 18, 2014] Version 1.6.14beta03 [September 18, 2014]
Define FE_DIVBYZERO, FE_INVALID, and FE_OVERFLOW in pngvalid.c if not
already defined. Revert floating point exception handling to version
1.6.14beta01 behavior.
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

@ -1,7 +1,7 @@
/* pngvalid.c - validate libpng by constructing then reading png files. /* pngvalid.c - validate libpng by constructing then reading png files.
* *
* Last changed in libpng 1.6.10 [March 6, 2014] * Last changed in libpng 1.6.14 [(PENDING RELEASE)]
* Copyright (c) 2014 Glenn Randers-Pehrson * Copyright (c) 2014 Glenn Randers-Pehrson
* Written by John Cunningham Bowler * Written by John Cunningham Bowler
* *
@ -30,6 +30,20 @@
# include <config.h> # include <config.h>
#endif #endif
#ifdef HAVE_FEENABLEEXCEPT /* from config.h, if included */
# include <fenv.h>
#endif
#ifndef FE_DIVBYZERO
#define FE_DIVBYZERO 0
#endif
#ifndef FE_INVALID
#define FE_INVALID 0
#endif
#ifndef FE_OVERFLOW
#define FE_OVERFLOW 0
#endif
/* Define the following to use this test against your installed libpng, rather /* Define the following to use this test against your installed libpng, rather
* than the one being built here: * than the one being built here:
*/ */
@ -39,13 +53,6 @@
# include "../../png.h" # include "../../png.h"
#endif #endif
#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
# ifdef HAVE_FEENABLEEXCEPT /* from config.h, if included */
# include <fenv.h>
# endif
#endif
#ifdef PNG_ZLIB_HEADER #ifdef PNG_ZLIB_HEADER
# include PNG_ZLIB_HEADER # include PNG_ZLIB_HEADER
#else #else
@ -9979,11 +9986,9 @@ static void signal_handler(int signum)
pos = safecat(msg, sizeof msg, pos, "abort"); pos = safecat(msg, sizeof msg, pos, "abort");
break; break;
#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
case SIGFPE: case SIGFPE:
pos = safecat(msg, sizeof msg, pos, "floating point exception"); pos = safecat(msg, sizeof msg, pos, "floating point exception");
break; break;
#endif
case SIGILL: case SIGILL:
pos = safecat(msg, sizeof msg, pos, "illegal instruction"); pos = safecat(msg, sizeof msg, pos, "illegal instruction");
@ -10049,21 +10054,18 @@ int main(int argc, char **argv)
/* Add appropriate signal handlers, just the ANSI specified ones: */ /* Add appropriate signal handlers, just the ANSI specified ones: */
signal(SIGABRT, signal_handler); signal(SIGABRT, signal_handler);
signal(SIGFPE, signal_handler);
signal(SIGILL, signal_handler); signal(SIGILL, signal_handler);
signal(SIGINT, signal_handler); signal(SIGINT, signal_handler);
signal(SIGSEGV, signal_handler); signal(SIGSEGV, signal_handler);
signal(SIGTERM, signal_handler); signal(SIGTERM, signal_handler);
#ifdef PNG_FLOATING_ARITHMETIC_SUPPORTED
signal(SIGFPE, signal_handler);
#ifdef HAVE_FEENABLEEXCEPT #ifdef HAVE_FEENABLEEXCEPT
/* Only required to enable FP exceptions on platforms where they start off /* Only required to enable FP exceptions on platforms where they start off
* disabled; this is not necessary but if it is not done pngvalid will likely * disabled; this is not necessary but if it is not done pngvalid will likely
* end up ignoring FP conditions that other platforms fault. * end up ignoring FP conditions that other platforms fault.
*/ */
feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW); feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
# endif
#endif #endif
modifier_init(&pm); modifier_init(&pm);