[libpng16] Renamed "assert" to "affirm", not affected by NDEBUG.

This commit is contained in:
Glenn Randers-Pehrson 2015-03-21 21:33:42 -05:00
parent 9f2fb72c67
commit 06963c7841
10 changed files with 70 additions and 96 deletions

View File

@ -1,5 +1,5 @@
Libpng 1.7.0beta58 - March 21, 2015 Libpng 1.7.0beta58 - March 22, 2015
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.
@ -757,9 +757,8 @@ Version 1.7.0beta57 [March 16, 2015]
in libpng-1.6.17beta01 (John Bowler). in libpng-1.6.17beta01 (John Bowler).
Revert change to png_default_read_data() made in libpng-1.7.0beta55. Revert change to png_default_read_data() made in libpng-1.7.0beta55.
Version 1.7.0beta58 [March 21, 2015] Version 1.7.0beta58 [March 22, 2015]
Implemented assert support and usage. Implemented affirm() support and usage.
Made assert (and impossible) removeable by defining NDEBUG.
Remove pnglibconf.dfn and pnglibconf.pre with "make clean". Remove pnglibconf.dfn and pnglibconf.pre with "make clean".
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net

View File

@ -5047,9 +5047,8 @@ Version 1.7.0beta57 [March 16, 2015]
in libpng-1.6.17beta01 (John Bowler). in libpng-1.6.17beta01 (John Bowler).
Revert change to png_default_read_data() made in libpng-1.7.0beta55. Revert change to png_default_read_data() made in libpng-1.7.0beta55.
Version 1.7.0beta58 [March 21, 2015] Version 1.7.0beta58 [March 22, 2015]
Implemented assert support and usage. Implemented affirm() support and usage.
Made assert (and impossible) removeable by defining NDEBUG.
Remove pnglibconf.dfn and pnglibconf.pre with "make clean". Remove pnglibconf.dfn and pnglibconf.pre with "make clean".
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net

4
png.c
View File

@ -689,13 +689,13 @@ png_get_copyright(png_const_structrp png_ptr)
#else #else
# ifdef __STDC__ # ifdef __STDC__
return PNG_STRING_NEWLINE \ return PNG_STRING_NEWLINE \
"libpng version 1.7.0beta58 - March 20, 2015" PNG_STRING_NEWLINE \ "libpng version 1.7.0beta58 - March 22, 2015" PNG_STRING_NEWLINE \
"Copyright (c) 1998-2015 Glenn Randers-Pehrson" PNG_STRING_NEWLINE \ "Copyright (c) 1998-2015 Glenn Randers-Pehrson" PNG_STRING_NEWLINE \
"Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \ "Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \
"Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \ "Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \
PNG_STRING_NEWLINE; PNG_STRING_NEWLINE;
# else # else
return "libpng version 1.7.0beta58 - March 20, 2015\ return "libpng version 1.7.0beta58 - March 22, 2015\
Copyright (c) 1998-2015 Glenn Randers-Pehrson\ Copyright (c) 1998-2015 Glenn Randers-Pehrson\
Copyright (c) 1996-1997 Andreas Dilger\ Copyright (c) 1996-1997 Andreas Dilger\
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc."; Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.";

View File

@ -649,7 +649,7 @@ png_set_longjmp_fn(png_structrp png_ptr, png_longjmp_ptr longjmp_fn,
/* This is an internal error in libpng: somehow we have been left /* This is an internal error in libpng: somehow we have been left
* with a stack allocated jmp_buf when the application regained * with a stack allocated jmp_buf when the application regained
* control. It's always possible to fix this up, but for the moment * control. It's always possible to fix this up, but for the moment
* this is an assert because that makes it easy to detect. * this is an affirm because that makes it easy to detect.
*/ */
impossible("Libpng jmp_buf still allocated"); impossible("Libpng jmp_buf still allocated");
/* png_ptr->jmp_buf_ptr = &png_ptr->jmp_buf_local; */ /* png_ptr->jmp_buf_ptr = &png_ptr->jmp_buf_local; */
@ -980,23 +980,23 @@ png_safe_execute(png_imagep image_in, int (*function)(png_voidp), png_voidp arg)
* The code always produces a message if it is possible, regardless of the * The code always produces a message if it is possible, regardless of the
* setting of PNG_ERROR_TEXT_SUPPORTED, except that in stable builds * setting of PNG_ERROR_TEXT_SUPPORTED, except that in stable builds
* PNG_ERROR_TEXT_SUPPORTED is honoured. See pngpriv.h for the calculation of * PNG_ERROR_TEXT_SUPPORTED is honoured. See pngpriv.h for the calculation of
* the two control macros PNG_ASSERT_ERROR (don't abort; stable build or rc) and * the two control macros PNG_AFFIRM_ERROR (don't abort; stable build or rc) and
* PNG_ASSERT_TEXT (output text.) * PNG_AFFIRM_TEXT (output text.)
*/ */
#if PNG_ASSERT_TEXT #if PNG_AFFIRM_TEXT
# ifdef PNG_HAVE_FORMAT_NUMBER # ifdef PNG_HAVE_FORMAT_NUMBER
static size_t static size_t
png_assert_number(png_charp buffer, size_t bufsize, size_t pos, png_affirm_number(png_charp buffer, size_t bufsize, size_t pos,
unsigned int number, int format) unsigned int number, int format)
{ {
char numbuf[PNG_NUMBER_BUFFER_SIZE]; char numbuf[PNG_NUMBER_BUFFER_SIZE];
return png_safecat(buffer, bufsize, pos, return png_safecat(buffer, bufsize, pos,
png_format_number(numbuf, numbuf + sizeof numbuf, format, number)); png_format_number(numbuf, numbuf + sizeof numbuf, format, number));
} }
# define assert_number(a,b,c,d,e) png_assert_number(a,b,c,d,e) # define affirm_number(a,b,c,d,e) png_affirm_number(a,b,c,d,e)
# else /* !HAVE_FORMAT_NUMBER */ # else /* !HAVE_FORMAT_NUMBER */
static size_t static size_t
png_assert_number(png_charp buffer, size_t bufsize, size_t pos, png_affirm_number(png_charp buffer, size_t bufsize, size_t pos,
unsigned int number) unsigned int number)
{ {
/* binhex it; highly non-portable, assumes the ASCII character set, but /* binhex it; highly non-portable, assumes the ASCII character set, but
@ -1026,29 +1026,29 @@ png_assert_number(png_charp buffer, size_t bufsize, size_t pos,
return png_safecat(buffer, bufsize, pos, numbuf+i); return png_safecat(buffer, bufsize, pos, numbuf+i);
} }
# define assert_number(a,b,c,d,e) png_assert_number(a,b,c,d) # define affirm_number(a,b,c,d,e) png_affirm_number(a,b,c,d)
#endif /* !HAVE_FORMAT_NUMBER */ #endif /* !HAVE_FORMAT_NUMBER */
#endif /* ASSERT_TEXT */ #endif /* AFFIRM_TEXT */
#if PNG_ASSERT_ERROR #if PNG_AFFIRM_ERROR
PNG_FUNCTION(void, png_assert,(png_const_structrp png_ptr, PNG_FUNCTION(void, png_affirm,(png_const_structrp png_ptr,
unsigned int position), PNG_NORETURN) unsigned int position), PNG_NORETURN)
#else #else
PNG_FUNCTION(void, png_assert,(png_const_structrp png_ptr, PNG_FUNCTION(void, png_affirm,(png_const_structrp png_ptr,
png_const_charp condition, unsigned int position), PNG_NORETURN) png_const_charp condition, unsigned int position), PNG_NORETURN)
#endif #endif
{ {
# if PNG_ASSERT_TEXT # if PNG_AFFIRM_TEXT
/* Format the 'position' number and output: /* Format the 'position' number and output:
* *
* " libpng version <version> - <date>\n" * " libpng version <version> - <date>\n"
* " translated __DATE__ __TIME__\n" * " translated __DATE__ __TIME__\n"
* " <file>, <line>: assert 'condition' failed" * " <file>, <line>: affirm 'condition' failed"
* *
* In the STABLE versions the output is the same for the first two lines * In the STABLE versions the output is the same for the first two lines
* but the last line becomes: * but the last line becomes:
* *
* " <position>: assert failed" * " <position>: affirm failed"
* *
* If there is no number formatting the numbers just get replaced by * If there is no number formatting the numbers just get replaced by
* some binhex (see the utility above). * some binhex (see the utility above).
@ -1059,10 +1059,10 @@ PNG_FUNCTION(void, png_assert,(png_const_structrp png_ptr,
pos = png_safecat(buffer, sizeof buffer, 0, PNG_HEADER_VERSION_STRING); pos = png_safecat(buffer, sizeof buffer, 0, PNG_HEADER_VERSION_STRING);
pos = png_safecat(buffer, sizeof buffer, pos, pos = png_safecat(buffer, sizeof buffer, pos,
" translated " __DATE__ " " __TIME__ "\n "); " translated " __DATE__ " " __TIME__ "\n ");
# if PNG_ASSERT_ERROR /* no 'condition' parameter: minimal text */ # if PNG_AFFIRM_ERROR /* no 'condition' parameter: minimal text */
pos = assert_number(buffer, sizeof buffer, pos, position, pos = affirm_number(buffer, sizeof buffer, pos, position,
PNG_NUMBER_FORMAT_x); PNG_NUMBER_FORMAT_x);
pos = png_safecat(buffer, sizeof buffer, pos, ": assert failed"); pos = png_safecat(buffer, sizeof buffer, pos, ": affirm failed");
# else /* !STABLE */ # else /* !STABLE */
/* Break down 'position' into a file name and a line number: */ /* Break down 'position' into a file name and a line number: */
{ {
@ -1096,34 +1096,34 @@ PNG_FUNCTION(void, png_assert,(png_const_structrp png_ptr,
pos = png_safecat(buffer, sizeof buffer, pos, filename); pos = png_safecat(buffer, sizeof buffer, pos, filename);
pos = png_safecat(buffer, sizeof buffer, pos, ".c, "); pos = png_safecat(buffer, sizeof buffer, pos, ".c, ");
pos = assert_number(buffer, sizeof buffer, pos, position, pos = affirm_number(buffer, sizeof buffer, pos, position,
PNG_NUMBER_FORMAT_u); PNG_NUMBER_FORMAT_u);
} }
pos = png_safecat(buffer, sizeof buffer, pos, ": assert '"); pos = png_safecat(buffer, sizeof buffer, pos, ": affirm '");
pos = png_safecat(buffer, sizeof buffer, pos, condition); pos = png_safecat(buffer, sizeof buffer, pos, condition);
pos = png_safecat(buffer, sizeof buffer, pos, "' failed"); pos = png_safecat(buffer, sizeof buffer, pos, "' failed");
# endif /* !STABLE */ # endif /* !STABLE */
# else /* !ASSERT_TEXT */ # else /* !AFFIRM_TEXT */
PNG_UNUSED(position) PNG_UNUSED(position)
# if !PNG_ASSERT_ERROR # if !PNG_AFFIRM_ERROR
PNG_UNUSED(condition) PNG_UNUSED(condition)
# endif # endif
# endif /* HAVE_ASSERT_TEXT */ # endif /* AFFIRM_TEXT */
/* Now in STABLE do a png_error, but in other builds output the message /* Now in STABLE do a png_error, but in other builds output the message
* (if possible) then abort (PNG_ABORT). * (if possible) then abort (PNG_ABORT).
*/ */
# if PNG_ASSERT_ERROR # if PNG_AFFIRM_ERROR
png_error(png_ptr, buffer/*only if ERROR_TEXT*/); png_error(png_ptr, buffer/*only if ERROR_TEXT*/);
# else /* !ASSERT_ERROR */ # else /* !AFFIRM_ERROR */
/* Use the app warning message mechanism is possible, this is an inline /* Use the app warning message mechanism is possible, this is an inline
* expansion of png_warning without the extra formatting of the message * expansion of png_warning without the extra formatting of the message
* that png_default_warning does and with the case !WARNINGS && CONSOLE_IO * that png_default_warning does and with the case !WARNINGS && CONSOLE_IO
* implemented. * implemented.
* *
* Note that it is possible that neither WARNINGS nor CONSOLE_IO are * Note that it is possible that neither WARNINGS nor CONSOLE_IO are
* supported; in that case no text will be output (and PNG_ASSERT_TEXT * supported; in that case no text will be output (and PNG_AFFIRM_TEXT
* will be false.) * will be false.)
*/ */
# ifdef PNG_WARNINGS_SUPPORTED # ifdef PNG_WARNINGS_SUPPORTED
@ -1140,7 +1140,7 @@ PNG_FUNCTION(void, png_assert,(png_const_structrp png_ptr,
# endif # endif
PNG_ABORT PNG_ABORT
# endif /* ASSERT_ERROR */ # endif /* AFFIRM_ERROR */
} }
#endif /* READ || WRITE */ #endif /* READ || WRITE */

View File

@ -120,7 +120,7 @@ PNG_FUNCTION(png_voidp /* PRIVATE */,
png_malloc_array,(png_const_structrp png_ptr, int nelements, png_malloc_array,(png_const_structrp png_ptr, int nelements,
size_t element_size),PNG_ALLOCATED) size_t element_size),PNG_ALLOCATED)
{ {
assert(nelements > 0 && element_size > 0); affirm(nelements > 0 && element_size > 0);
return png_malloc_array_checked(png_ptr, nelements, element_size); return png_malloc_array_checked(png_ptr, nelements, element_size);
} }
@ -129,7 +129,7 @@ png_realloc_array,(png_structrp png_ptr, png_const_voidp old_array,
int old_elements, int add_elements, size_t element_size),PNG_ALLOCATED) int old_elements, int add_elements, size_t element_size),PNG_ALLOCATED)
{ {
/* These are internal errors: */ /* These are internal errors: */
assert(add_elements > 0 && element_size > 0 && old_elements >= 0 && affirm(add_elements > 0 && element_size > 0 && old_elements >= 0 &&
(old_array != NULL || old_elements == 0)); (old_array != NULL || old_elements == 0));
/* Check for overflow on the elements count (so the caller does not have to /* Check for overflow on the elements count (so the caller does not have to

View File

@ -712,7 +712,7 @@ png_process_IDAT_data(png_structrp png_ptr, png_bytep buffer,
png_size_t buffer_length) png_size_t buffer_length)
{ {
/* The caller checks for a non-zero buffer length. */ /* The caller checks for a non-zero buffer length. */
assert(buffer_length > 0 && buffer != NULL); affirm(buffer_length > 0 && buffer != NULL);
/* This routine must process all the data it has been given /* This routine must process all the data it has been given
* before returning, calling the row callback as required to * before returning, calling the row callback as required to

View File

@ -332,66 +332,64 @@
# define PNG_DLL_EXPORT # define PNG_DLL_EXPORT
#endif #endif
#ifndef NDEBUG /* The affirm mechanism results in a minimal png_error in released versions
/* The assert mechanism results in a minimal png_error in released versions
* ('STABLE' versions) and a more descriptive abort in all other cases. * ('STABLE' versions) and a more descriptive abort in all other cases.
* The macros rely on the naming convention throughout this code - png_ptr * The macros rely on the naming convention throughout this code - png_ptr
* exists and is of type png_const_structrp or a compatible type - and the * exists and is of type png_const_structrp or a compatible type - and the
* presence in each file of a uniquely defined macro PNG_SRC_FILE; a number * presence in each file of a uniquely defined macro PNG_SRC_FILE; a number
* indicating which file this is (this is to save space in released versions). * indicating which file this is (this is to save space in released versions).
* *
* 'assert' is intended to look like the ANSI-C <assert.h> macro; note that this * 'affirm' is intended to look like the ANSI-C <assert.h> macro; note that
* is legal ANSI-C code because ANSI-C only reserves 'assert' if <assert.h> is * this macro can coexist with the assert macro if <assert.h> is
* included. Doing it this way allows <assert.h> to be used if the ANSI-C * included.
* behavior is preferred in the future.
* *
* PNG_SRC_LINE is the position of the assert macro. There are currently 15 * PNG_SRC_LINE is the position of the affirm macro. There are currently 15
* main source files (4 bits) and the biggest (pngrtran.c) has more than 4095 * main source files (4 bits) and the biggest (pngrtran.c) has more than 4095
* lines (12 bits), but to ensure the number will fit into 16-bits in the * lines (12 bits), but to ensure the number will fit into 16-bits in the
* future and to allow hardware files to use assert the encoding is a bit-wise * future and to allow hardware files to use affirm the encoding is a bit-wise
* encoding based on the current number of lines. * encoding based on the current number of lines.
* *
* The following works out the value for two numeric #defines: * The following works out the value for two numeric #defines:
* *
* PNG_ASSERT_ERROR: Set to 1 if asserts should png_error (or png_err) rather * PNG_AFFIRM_ERROR: Set to 1 if affirm should png_error (or png_err) rather
* than abort. The png_error text is the minimal (file * than abort. The png_error text is the minimal (file
* location) text in this case, if it is produced. This * location) text in this case, if it is produced. This
* flag indicates a STABLE (or RC) build. * flag indicates a STABLE (or RC) build.
* PNG_ASSERT_TEXT: Set to 1 if assert text should be produced, either the * PNG_AFFIRM_TEXT: Set to 1 if affirm text should be produced, either the
* minimal text or, if PNG_ASSERT_ERROR is 0, the more * minimal text or, if PNG_AFFIRM_ERROR is 0, the more
* verbose text including the 'condition' string. This * verbose text including the 'condition' string. This
* value depends on whether the build supports an * value depends on whether the build supports an
* appropriate way of outputing the message. * appropriate way of outputing the message.
* *
* Note that these are not configurable: this is just the assert code, there's * Note that these are not configurable: this is just the affirm code, there's
* no reason to allow configuration of these options. * no reason to allow configuration of these options.
*/ */
#define PNG_ASSERT_ERROR (PNG_LIBPNG_BUILD_BASE_TYPE >= PNG_LIBPNG_BUILD_RC) #define PNG_AFFIRM_ERROR (PNG_LIBPNG_BUILD_BASE_TYPE >= PNG_LIBPNG_BUILD_RC)
#define PNG_ASSERT_TEXT (PNG_ASSERT_ERROR ?\ #define PNG_AFFIRM_TEXT (PNG_AFFIRM_ERROR ?\
(defined PNG_ERROR_TEXT_SUPPORTED) :\ (defined PNG_ERROR_TEXT_SUPPORTED) :\
(defined PNG_WARNINGS_SUPPORTED) || (defined PNG_CONSOLE_IO_SUPPORTED)) (defined PNG_WARNINGS_SUPPORTED) || (defined PNG_CONSOLE_IO_SUPPORTED))
#define PNG_SRC_LINE (PNG_SRC_FILE + __LINE__) #define PNG_SRC_LINE (PNG_SRC_FILE + __LINE__)
/* png_assertpp and png_impossiblepp are macros to make the correct call to the /* png_affirmpp and png_impossiblepp are macros to make the correct call to the
* png_assert function; these macros do not assume that the png_structp is * png_affirm function; these macros do not assume that the png_structp is
* called png_ptr. * called png_ptr.
*/ */
#if PNG_ASSERT_ERROR #if PNG_AFFIRM_ERROR
# define png_assertpp(pp, cond)\ # define png_affirmpp(pp, cond)\
do\ do\
if (!(cond)) png_assert(pp, PNG_SRC_LINE);\ if (!(cond)) png_affirm(pp, PNG_SRC_LINE);\
while (0) while (0)
# define png_impossiblepp(pp, reason) png_assert(pp, PNG_SRC_LINE) # define png_impossiblepp(pp, reason) png_affirm(pp, PNG_SRC_LINE)
#else #else
# define png_assertpp(pp, cond)\ # define png_affirmpp(pp, cond)\
do\ do\
if (!(cond)) png_assert(pp, #cond, PNG_SRC_LINE);\ if (!(cond)) png_affirm(pp, #cond, PNG_SRC_LINE);\
while (0) while (0)
# define png_impossiblepp(pp, reason) png_assert(pp, reason, PNG_SRC_LINE) # define png_impossiblepp(pp, reason) png_affirm(pp, reason, PNG_SRC_LINE)
#endif #endif
#define assert(cond) png_assertpp(png_ptr, cond) #define affirm(cond) png_affirmpp(png_ptr, cond)
#define impossible(cond) png_impossiblepp(png_ptr, cond) #define impossible(cond) png_impossiblepp(png_ptr, cond)
/* The defines for PNG_SRC_FILE: */ /* The defines for PNG_SRC_FILE: */
@ -442,28 +440,6 @@
PNG_apply(arm_arm_init)\ PNG_apply(arm_arm_init)\
PNG_apply(arm_filter_neon_intrinsics)\ PNG_apply(arm_filter_neon_intrinsics)\
PNG_end PNG_end
#else
# define assert(cond)
# define impossible(cond)
# define png_impossiblepp(pp, cond)
# define PNG_SRC_FILE_png
# define PNG_SRC_FILE_pngerror
# define PNG_SRC_FILE_pngget
# define PNG_SRC_FILE_pngmem
# define PNG_SRC_FILE_pngpread
# define PNG_SRC_FILE_pngread
# define PNG_SRC_FILE_pngrio
# define PNG_SRC_FILE_pngrtran
# define PNG_SRC_FILE_pngrutil
# define PNG_SRC_FILE_pngset
# define PNG_SRC_FILE_pngtrans
# define PNG_SRC_FILE_pngwio
# define PNG_SRC_FILE_pngwrite
# define PNG_SRC_FILE_pngwtran
# define PNG_SRC_FILE_pngwutil
# define PNG_SRC_FILE_arm_arm_init
# define PNG_SRC_FILE_arm_filter_neon_intrinsics
#endif /* NDEBUG */
/* SECURITY and SAFETY: /* SECURITY and SAFETY:
* *
@ -850,11 +826,11 @@ extern "C" {
* All of these functions must be declared with PNG_INTERNAL_FUNCTION. * All of these functions must be declared with PNG_INTERNAL_FUNCTION.
*/ */
/* Assert handling */ /* Assert handling */
#if PNG_ASSERT_ERROR #if PNG_AFFIRM_ERROR
PNG_INTERNAL_FUNCTION(void, png_assert,(png_const_structrp png_ptr, PNG_INTERNAL_FUNCTION(void, png_affirm,(png_const_structrp png_ptr,
unsigned int position), PNG_NORETURN); unsigned int position), PNG_NORETURN);
#else #else
PNG_INTERNAL_FUNCTION(void, png_assert,(png_const_structrp png_ptr, PNG_INTERNAL_FUNCTION(void, png_affirm,(png_const_structrp png_ptr,
png_const_charp condition, unsigned int position), PNG_NORETURN); png_const_charp condition, unsigned int position), PNG_NORETURN);
#endif #endif

View File

@ -2862,7 +2862,7 @@ png_image_read_colormap(png_voidp argument)
break; break;
} }
assert(cmap_entries <= 256 && cmap_entries <= image->colormap_entries); affirm(cmap_entries <= 256 && cmap_entries <= image->colormap_entries);
image->colormap_entries = cmap_entries; image->colormap_entries = cmap_entries;
@ -3958,7 +3958,7 @@ png_image_read_direct(png_voidp argument)
} }
else else
assert(do_local_compose == 0 /* else alpha channel lost */); affirm(do_local_compose == 0 /* else alpha channel lost */);
if (info_ptr->bit_depth == 16) if (info_ptr->bit_depth == 16)
info_format |= PNG_FORMAT_FLAG_LINEAR; info_format |= PNG_FORMAT_FLAG_LINEAR;
@ -3987,7 +3987,7 @@ png_image_read_direct(png_voidp argument)
# endif # endif
/* This is actually an internal error. */ /* This is actually an internal error. */
assert(info_format == format /* else unimplemented transformations */); affirm(info_format == format /* else unimplemented transformations */);
} }
/* Now read the rows. If do_local_compose is set then it is necessary to use /* Now read the rows. If do_local_compose is set then it is necessary to use

View File

@ -1272,7 +1272,7 @@ png_init_background_transformations(png_structrp png_ptr)
* than the libpng required depth scale the values back to the 8-bit * than the libpng required depth scale the values back to the 8-bit
* range, the test below verifies that this is correct. * range, the test below verifies that this is correct.
*/ */
assert(bit_depth <= required_bit_depth || affirm(bit_depth <= required_bit_depth ||
(bit_depth == 16 && required_bit_depth == 8)); (bit_depth == 16 && required_bit_depth == 8));
if ((color_type & PNG_COLOR_MASK_COLOR) != 0) if ((color_type & PNG_COLOR_MASK_COLOR) != 0)
@ -2195,7 +2195,7 @@ png_do_unshift(png_row_infop row_info, png_bytep row,
case 2: case 2:
/* Must be 2bpp gray */ /* Must be 2bpp gray */
/* assert(channels == 1 && shift[0] == 1) */ /* affirm(channels == 1 && shift[0] == 1) */
{ {
png_bytep bp = row; png_bytep bp = row;
png_bytep bp_end = bp + row_info->rowbytes; png_bytep bp_end = bp + row_info->rowbytes;
@ -2210,7 +2210,7 @@ png_do_unshift(png_row_infop row_info, png_bytep row,
case 4: case 4:
/* Must be 4bpp gray */ /* Must be 4bpp gray */
/* assert(channels == 1) */ /* affirm(channels == 1) */
{ {
png_bytep bp = row; png_bytep bp = row;
png_bytep bp_end = bp + row_info->rowbytes; png_bytep bp_end = bp + row_info->rowbytes;

View File

@ -663,7 +663,7 @@ png_write_compressed_data_out(png_structrp png_ptr, compression_state *comp)
} }
/* This is an internal error; 'next' must have been NULL! */ /* This is an internal error; 'next' must have been NULL! */
assert(output_len == 0); affirm(output_len == 0);
} }
#endif /* WRITE_COMPRESSED_TEXT */ #endif /* WRITE_COMPRESSED_TEXT */
@ -1204,7 +1204,7 @@ png_write_iCCP(png_structrp png_ptr, png_const_charp name,
/* These are all internal problems: the profile should have been checked /* These are all internal problems: the profile should have been checked
* before when it was stored. * before when it was stored.
*/ */
assert(profile != NULL); affirm(profile != NULL);
profile_len = png_get_uint_32(profile); profile_len = png_get_uint_32(profile);