[devel] Reverted changes to call png_longjmp in contrib/gregbook

where it is not appropriate.  If mainprog->jmpbuf is used by setjmp,
then png_longjmp cannot be used.
Reversed patch to remove error handler when the jmp_buf is stored in the
main program structure, not the png_struct.
The error handler is needed because the default handler in libpng will
always use the jmp_buf in the library control structure; this is never
set.  The gregbook code is a useful example because, even though it
uses setjmp/longjmp, it shows how error handling can be implemented
using control mechanisms not directly supported by libpng.  The
technique will work correctly with mechanisms such as Microsoft
Structure Exceptions or C++ exceptions (compiler willing - note that gcc
does not by default support interworking of C and C++ error handling.)
This commit is contained in:
Glenn Randers-Pehrson
2010-06-28 20:17:48 -05:00
parent 6cac43c974
commit 73e28ef13d
9 changed files with 122 additions and 21 deletions

View File

@@ -1,5 +1,5 @@
Libpng 1.5.0beta33 - June 26, 2010
Libpng 1.5.0beta33 - June 29, 2010
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.
@@ -77,6 +77,7 @@ version 1.5.0beta10 [February 25, 2010]
version 1.5.0beta11 [March 6, 2010]
Removed checking for already-included setjmp.h from pngconf.h
Fixed inconsistent indentations and made numerous cosmetic changes.
Revised the "SEE ALSO" style of libpng.3, libpngpf.3, and png.5
version 1.5.0beta12 [March 9, 2010]
Moved "#include png.h" inside pngpriv.h and removed "#include png.h" from
@@ -225,7 +226,7 @@ version 1.5.0beta24 [May 7, 2010]
offset of the png_ptr->rowbuf pointer into png_ptr->big_row_buf.
Added more blank lines for readability.
version 1.5.0beta25 [June 26, 2010]
version 1.5.0beta25 [June 29, 2010]
In pngpread.c: png_push_have_row() add check for new_row > height
Removed the now-redundant check for out-of-bounds new_row from example.c
@@ -251,16 +252,29 @@ version 1.5.0beta31 [June 26, 2010]
Revised pngpread.c patch of beta28 to avoid an endless loop.
Removed some trailing blanks.
version 1.5.0beta32 [June 26, 2010]
version 1.5.0beta32 [June 29, 2010]
Removed leftover scripts/options.patch and scripts/options.rej
version 1.5.0beta32 [June 26, 2010]
version 1.5.0beta32 [June 29, 2010]
Made FIXED and FLOATING options consistent in the APIs they enable and
disable. Corrected scripts/options.awk to handle both command line
options and options specified in the .dfa files.
Changed char *msg to PNG_CONST char *msg in pngrutil.c
Make png_set_sRGB_gAMA_and_cHRM set values using either the fixed or
floating point APIs, but not both.
Reversed patch to remove error handler when the jmp_buf is stored in the
main program structure, not the png_struct.
The error handler is needed because the default handler in libpng will
always use the jmp_buf in the library control structure; this is never
set. The gregbook code is a useful example because, even though it
uses setjmp/longjmp, it shows how error handling can be implemented
using control mechanisms not directly supported by libpng. The
technique will work correctly with mechanisms such as Microsoft
Structure Exceptions or C++ exceptions (compiler willing - note that gcc
does not by default support interworking of C and C++ error handling.)
Reverted changes to call png_longjmp in contrib/gregbook where it is not
appropriate. If mainprog->jmpbuf is used by setjmp, then png_longjmp
cannot be used.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net:
(subscription required; visit