1998-04-21 20:03:57 +00:00
|
|
|
|
2000-03-21 11:13:06 +00:00
|
|
|
Known bugs and suggested enhancements in libpng-1.0.6
|
1998-04-21 20:03:57 +00:00
|
|
|
|
2000-05-01 14:31:54 +00:00
|
|
|
1. April 24, 2000 -- BUG -- binary incompatibility
|
|
|
|
|
|
|
|
Libpng-1.0.6 is binary incompatible with old applications that
|
|
|
|
allocate the png_struct and png_info structures themselves instead
|
|
|
|
of using png_create_*(). They do not allocate enough space for
|
|
|
|
the structures because they have an incorrect notion of
|
|
|
|
sizeof(png_struct) and sizeof(png_info). Although such applications
|
|
|
|
should be considered broken rather than considering libpng to be broken,
|
|
|
|
they are numerous and include products of the PNG group, such
|
|
|
|
as gif2png and pnmtopng-2.36 (pnmtopng-2.37 is OK), so libpng will
|
|
|
|
be fixed in version 1.0.7 to work around this problem.
|
|
|
|
|
|
|
|
Applications that use png_create_*() instead of png_ptr=malloc(...)
|
|
|
|
are immune to this problem.
|
|
|
|
|
|
|
|
STATUS: Fixed in libpng-1.0.6ad, libpng-1.0.6i, and patch-d
|
|
|
|
which are currently being tested by the PNG group.
|
|
|
|
The fix necessarily reintroduces a binary incompatibility with any
|
|
|
|
application that makes direct access to the png_info and
|
|
|
|
png_struct members that deal with the pCAL chunk, palette_lookup,
|
|
|
|
dither_index, time_buffer, or weighted filtering, i.e., any members
|
|
|
|
coming after the new "free_me" member of either structure. It
|
|
|
|
is believed that applications affected by this reintroduced binary
|
|
|
|
incompatibility are rare (none are known to the PNG group). An
|
|
|
|
effective workaround for this and the next bug is to recompile the
|
|
|
|
old applications with the installed version of libpng.
|
|
|
|
|
|
|
|
2. April 23, 2000 -- BUG -- binary incompatibility
|
2000-04-24 04:14:02 +00:00
|
|
|
|
|
|
|
Libpng-1.0.6 introduced binary incompatibility for applications that
|
2000-05-01 14:31:54 +00:00
|
|
|
make direct access to members of the png_struct and png_info structures,
|
|
|
|
due to the insertion of the free_me member ahead of some previously
|
|
|
|
existing members.
|
2000-04-24 04:14:02 +00:00
|
|
|
|
2000-05-01 14:31:54 +00:00
|
|
|
Applications that use png_set_*(), png_get_*() are immune to this
|
|
|
|
problem, but people are still to this day writing applications that
|
|
|
|
make ill-advised direct access to members of the png_struct and
|
|
|
|
png_info structures, so libpng-1.0.6 will be patched to work around
|
|
|
|
this problem.
|
2000-04-24 04:14:02 +00:00
|
|
|
|
2000-05-01 14:31:54 +00:00
|
|
|
STATUS: Fixed in libpng-1.0.6g and patch-d, which are currently being
|
|
|
|
tested by the PNG group. Users can work around the problem without
|
|
|
|
patching libpng by recompiling their applications.
|
|
|
|
|
|
|
|
3. April 15, 2000 -- BUG -- pnggccrd.c
|
2000-04-24 04:14:02 +00:00
|
|
|
|
|
|
|
If PNG_NO_GLOBAL_ARRAYS is defined, pnggccrd.c will not compile.
|
|
|
|
|
|
|
|
STATUS: Fixed in libpng-1.0.6g
|
|
|
|
|
2000-05-01 14:31:54 +00:00
|
|
|
4. April 1, 2000 -- BUG
|
1998-04-21 20:03:57 +00:00
|
|
|
|
2000-04-02 03:10:05 +00:00
|
|
|
Under some circumstances old applications that make direct access to
|
|
|
|
the info_ptr->text and its members might free the same memory that
|
|
|
|
is also free'ed by libpng during the png_destroy_struct process.
|
|
|
|
|
2000-04-24 04:14:02 +00:00
|
|
|
Fixed in libpng-1.0.6-patch-c and libpng-1.0.6d. The PNG_FREE_TEXT flag
|
2000-04-02 03:10:05 +00:00
|
|
|
bit in info_ptr->free_me is now checked to make sure libpng is responsible
|
|
|
|
for freeing the memory.
|
|
|
|
|
2000-05-01 14:31:54 +00:00
|
|
|
5. April 1, 2000 -- BUG
|
2000-04-02 03:10:05 +00:00
|
|
|
|
|
|
|
The non-ISO-C "strdup()" function is used in png.c
|
|
|
|
|
|
|
|
STATUS: The function has been simplified and no longer uses strdup()
|
2000-04-24 04:14:02 +00:00
|
|
|
in libpng-1.0.6-patch-c and libpng-1.0.6d.
|
2000-04-02 03:10:05 +00:00
|
|
|
|
2000-05-01 14:31:54 +00:00
|
|
|
6. March 24, 2000 -- BUG
|
2000-04-02 03:10:05 +00:00
|
|
|
|
|
|
|
The png_set_rgb_to_gray_fixed() function is setting incorrect weighting
|
|
|
|
factors.
|
|
|
|
|
2000-04-24 04:14:02 +00:00
|
|
|
STATUS: Fixed in libpng-1.0.6-patch-b and libpng-1.0.6d.
|
2000-04-02 03:10:05 +00:00
|
|
|
|
2000-05-01 14:31:54 +00:00
|
|
|
7. March 22, 2000 -- BUG
|
2000-04-02 03:10:05 +00:00
|
|
|
|
|
|
|
There are some printf() and fprintf() statements active in pngwutil.c
|
|
|
|
when PNG_NO_STDIO and PNG_sCAL_SUPPORTED are both defined.
|
|
|
|
|
2000-04-24 04:14:02 +00:00
|
|
|
STATUS: Fixed in libpng-1.0.6-patch-a and libpng-1.0.6d. The strcpy()
|
2000-04-02 03:10:05 +00:00
|
|
|
function is used instead.
|
|
|
|
|
2000-05-01 14:31:54 +00:00
|
|
|
8. March 22, 2000 -- BUG
|
2000-04-02 03:10:05 +00:00
|
|
|
|
|
|
|
The length of the iCCP chunk data is calculated incorrectly; because
|
|
|
|
it can contain zeroes, strlen() doesn't work.
|
|
|
|
|
2000-04-24 04:14:02 +00:00
|
|
|
STATUS: Fixed in libpng-1.0.6-patch-a and libpng-1.0.6d by adding a
|
2000-04-07 15:34:56 +00:00
|
|
|
data_length parameter to the png_decompress_chunk() function.
|
2000-04-02 03:10:05 +00:00
|
|
|
|
2000-05-01 14:31:54 +00:00
|
|
|
9. March 15, 1998 -- OPTIMIZATION -- Kevin Bracey
|
1998-04-21 20:03:57 +00:00
|
|
|
|
|
|
|
Loops need to be optimized everywhere
|
|
|
|
|
1998-06-14 19:43:31 +00:00
|
|
|
Make them count down instead of up -- Kevin Bracey
|
1998-12-29 17:47:59 +00:00
|
|
|
|
1998-06-14 19:43:31 +00:00
|
|
|
Optimizing compilers don't need this, and making
|
|
|
|
the change would be error prone -- Tom Lane, Glenn R-P
|
1998-06-06 20:31:35 +00:00
|
|
|
|
1998-06-14 19:43:31 +00:00
|
|
|
Question whether i-- or --i is better.
|
1998-06-06 20:31:35 +00:00
|
|
|
|
1998-06-14 19:43:31 +00:00
|
|
|
STATUS: Under investigation, postponed until after
|
1999-12-10 15:43:02 +00:00
|
|
|
libpng-1.1.0. About 160 loops will be turned around
|
|
|
|
in libpng-1.1.Nn, for testing.
|
1998-12-29 17:47:59 +00:00
|
|
|
|
2000-05-01 14:31:54 +00:00
|
|
|
10. July 4, 1998 -- ENHANCEMENT -- Glenn R-P
|
1998-12-29 17:47:59 +00:00
|
|
|
|
1999-10-01 19:22:25 +00:00
|
|
|
libpng-1.0.5 and earlier transform colors to gamma=1.0 space for
|
1998-12-29 17:47:59 +00:00
|
|
|
merging with background, and then back to the image's gamma. The
|
|
|
|
bit_depth of the intermediate (gamma=1.0) representation is probably
|
|
|
|
not sufficient. In the typical gamma=1/2.2 situation, the linear
|
|
|
|
pixels need about 4 more bits than the gamma-encoded ones, to avoid
|
|
|
|
loss of precision. A similar situation exists with the rgb_to_gray
|
|
|
|
operation.
|
|
|
|
|
|
|
|
STATUS: under development.
|
|
|
|
|
2000-05-01 14:31:54 +00:00
|
|
|
11. September 1999 -- ENHANCEMENT --
|
1999-09-17 17:27:26 +00:00
|
|
|
|
|
|
|
It should be possible to use libpng without floating-point aritmetic.
|
|
|
|
|
|
|
|
STATUS: Under investigation, implementation postponed until after
|
2000-04-07 15:34:56 +00:00
|
|
|
libpng-1.0.6. The application interface will change because replacements
|
1999-09-17 17:27:26 +00:00
|
|
|
for the png_set_gAMA(), png_set_cHRM(), and corresponding png_get_()
|
|
|
|
functions will be needed.
|
1998-06-06 20:31:35 +00:00
|
|
|
|
2000-04-02 03:10:05 +00:00
|
|
|
Much of this was completed in libpng-1.0.6, but gamma compensation
|
2000-02-05 05:40:16 +00:00
|
|
|
is not yet done in fixed-point arithmetic.
|
|
|
|
|