From 3de7bde0e1a02a3e990af6993e71f0ddb93a0a1a Mon Sep 17 00:00:00 2001 From: Glenn Randers-Pehrson Date: Sun, 1 Nov 2009 08:47:04 -0600 Subject: [PATCH] [master] Revised iTXt support and documentation --- ANNOUNCE | 4 ++++ CHANGES | 4 ++++ libpng-1.2.41beta11.txt | 6 +----- libpng.3 | 6 +----- pngset.c | 14 ++++++++------ 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/ANNOUNCE b/ANNOUNCE index 8bbc4377..144e8319 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -100,6 +100,10 @@ version 1.2.41beta10 [November 1, 2009] been building previous versions with PNG_iTXt_SUPPORTED as well. version 1.2.41beta11 [November 1, 2009] + Revised iTXt support. To ensure binary compatibility with + previous versions, the "lang" and "lang_key" members will be assumed + to be omitted from previous versions whenever there is a library + mismatch. Send comments/corrections/commendations to png-mng-implement at lists.sf.net diff --git a/CHANGES b/CHANGES index b5a8097e..6704fe56 100644 --- a/CHANGES +++ b/CHANGES @@ -2530,6 +2530,10 @@ version 1.2.41beta10 [November 1, 2009] been building previous versions with PNG_iTXt_SUPPORTED as well. version 1.2.41beta11 [November 1, 2009] + Revised iTXt support. To ensure binary compatibility with + previous versions, the "lang" and "lang_key" members will be assumed + to be omitted from previous versions whenever there is a library + mismatch. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/libpng-1.2.41beta11.txt b/libpng-1.2.41beta11.txt index 793699a3..17b7af26 100644 --- a/libpng-1.2.41beta11.txt +++ b/libpng-1.2.41beta11.txt @@ -2951,11 +2951,7 @@ png_create_write_struct_2(), png_set_mem_fn(), png_get_mem_ptr(), png_malloc_default(), and png_free_default() were added. Support for the iTXt chunk has been enabled by default as of -version 1.2.41. If you have been defining PNG_iTXt_SUPPORTED -already, please continue to do so, as a signal to libpng that your -previous versions also supported iTXt. If you have not been defining -PNG_iTXt_SUPPORTED, please don't start now; it will be enabled for -you by default. +version 1.2.41. Support for certain MNG features was enabled. diff --git a/libpng.3 b/libpng.3 index 8accd5aa..2ea3bed2 100644 --- a/libpng.3 +++ b/libpng.3 @@ -3772,11 +3772,7 @@ png_create_write_struct_2(), png_set_mem_fn(), png_get_mem_ptr(), png_malloc_default(), and png_free_default() were added. Support for the iTXt chunk has been enabled by default as of -version 1.2.41. If you have been defining PNG_iTXt_SUPPORTED -already, please continue to do so, as a signal to libpng that your -previous versions also supported iTXt. If you have not been defining -PNG_iTXt_SUPPORTED, please don't start now; it will be enabled for -you by default. +version 1.2.41. Support for certain MNG features was enabled. diff --git a/pngset.c b/pngset.c index b083b91d..c3725d1e 100644 --- a/pngset.c +++ b/pngset.c @@ -662,18 +662,20 @@ png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr, if (png_ptr == NULL || info_ptr == NULL || num_text == 0) return(0); -#ifdef PNG_iTXt_NOT_PREVIOUSLY_SUPPORTED /* If an earlier version of the library was used to build the * application, it might be using a png_textp structure that - * does not contain the lang or lang_key elements. If you build + * does not contain the lang or lang_key elements. Even if you build * this library with PNG_iTXt_SUPPORTED explicitly defined, - * then we assume that your older library was also built with - * PNG_iTXt_SUPPORTED defined and the complete png_textp structure - * has existed all along and it's safe to access them. See pngconf.h. + * and your older library was also built with PNG_iTXt_SUPPORTED + * defined, the complete png_textp structure probably has not existed + * all along and it's not safe to access them, due to a bug in + * pngconf.h from version 1.2.9 to 1.2.40. + * + * To do: accept mismatched libraries when both are version 1.2.41 + * or later. */ if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH) caller_no_itxt = 1; -#endif /* Make sure we have enough space in the "text" array in info_struct * to hold all of the incoming text_ptr objects.