blob: 76c51e7c12d748c690ade6b1ba382851e9d3db13 [file] [log] [blame]
Known bugs and suggested enhancements in libpng-1.0.1
1. March 13, 1998 -- BUG -- pngtrans.c:
row_info->channels should be updated --
row_info->color_type should be updated --
STATUS: I think this is all fixed in libpng-1.0.1a but needs
to be tested.
2. March 14, 1998 -- ENHANCEMENT -- Glenn
We should add the G>GA, G>GX, G>AG, and G>XG transformations
in png_do_read_filler()
STATUS: Implemented in libpng-1.0.1a
3. March 14, 1998 -- BUG? -- Greg Roelofs
pngrtran.c: if-test for channels/FILLER may be incorrect
STATUS: Under investigation. Appears to be working correctly
in libpng-1.0.1c.
4. March 15, 1998 -- BUG -- Kevin Bracey
pngwtran.c:
line 306: loop should count to row_info->width, not to
row_info->width*row_info->channnels
STATUS: Fixed in libpng-1.0.1a
5. March 15, 1998 -- OPTIMIZATION -- Kevin Bracey
Loops need to be optimized everywhere
a. Make them count down instead of up -- Kevin Bracey
Optimizing compilers don't need this, and making
the change would be error prone -- Tom Lane, Glenn R-P
Question whether i-- or --i is better.
STATUS: Under investigation. About 150 loops turned around
in libpng-1.0.1d, for testing. Object files and executables
are about 20k smaller in SGI and gcc-compiled codes.
b. Remove products and structure members from loop tests -- Glenn R-P
Can be accomplished without messing with loop guts. This
was shown to be effective on optimized SGI compiler:
replace
png_uint_32 i;
for(i=0; i < s->a*s->b; i++)
with
png_uint_32 i, istop;
istop = s->a*s->b;
for(i=0; i<istop; i++)
STATUS: Mostly done in libpng-1.0.1a, done for all important loops.
More done in libpng-1.0.1b.
c. Replace abs() with intrinsic ternary operations in Paeth
filtering -- Glenn R-P
STATUS: Done in libpng-1.0.1a
(can be restored to original behavior with #define PNG_USE_ABS)
d. In pngwutil.c, make separate simple loops to use when filter
heuristic sums aren't needed. -- Glenn R-P
STATUS: Done in libpng-1.0.1a
6. April 6, 1998 -- BUG -- bug in pngset.c (rowbytes too large) -- Bob Dellaca
pngset.c has a bug, introduced in version 0.99c, that sets rowbytes
too large when writing an image with bit_depth < 8
STATUS: Fixed in libpng-1.0.1a
7. April 10, 1998 -- BUG -- pngwutil weighted filtering bugs -- Glenn R-P
pngwutil.c has some bugs in the experimental weighted filter
algorithm (PNG_FILTER_XXX should be PNG_FILTER_VALUE_XXX in
several places)
STATUS: Andreas concurs. Fixed in libpng-1.0.1a
8. April 10, 1998 -- ENHANCEMENT -- run-time selection of malloc function
-- Bob Dellaca
pngmem.c currently provides a compile-time option to replace
png_malloc() and png_free(). It's been requested that these
be made possible at run time, via calls to new png_set_malloc_fn()
and png_set_free_fn() functions.
STATUS: Under consideration
9. April 11, 1998 -- BUG -- incorrect truncation of tRNS data in
illegal PNG file where tRNS precedes PLTE -- Larry Reeve
There is a misplaced pngrutil code block that truncates tRNS if it has
more than num_palette entries -- test was done before num_palette was
defined. Although the PNG file is illegal, it shouldn't crash apps.
There is a simple fix; just moving the test to the point after
num_palette has been defined.
STATUS: Fixed in libpng-1.0.1a
10. April 16, 1998 -- BUG -- incorrect operation of png_convert_to_rfc1123
with 31st day of the month -- Steve Eddins
The "ptime->date % 31" is wrong, should be "ptime->date % 32".
STATUS: Fixed in libpng-1.0.1a
11. April 21, 1998 -- ENHANCEMENT -- relocation of composite macros
png_composite() and png_composite_16() relocated to png.h
STATUS: Done in libpng-1.0.1b
12. April 22, 1998 -- ENHANCEMENT -- makefile.sco
Mike Hopkirk contributed a makefile for SCO osr5 and sco UW7
STATUS: Added to libpng-1.0.1b distribution
13: April 30, 1998 -- ENHANCEMENT -- warnings
When people define out some of the read transformations and then
try to use them, the request is silently ignored. It was suggested
that a warning be issued in such cases.
STATUS: Done in libpng-1.0.1b
14. May 2, 1998 -- BUG -- incorrect mask for filler bytes
In pngrtran.c, png_do_filler(), the masks for hi_filler and low_filler
should be 0xff instead of 0xf
STATUS: Fixed in libpng-1.0.1c
15. May 3, 1998 -- BUG -- buffer overflow in png_do_read_filler()
In pngrutil.c, max_pixel_depth needs to be set to 32 when using
png_do_read_filler with palette images.
STATUS: Fixed in libpng-1.0.1c (see also items 1 and 3 above).
16. May 3, 1998 -- BUG -- type definitions wrong on error functions -- Tom Lane
In png_create_xxx_struct(), the error functions should have typedef
png_voidp instead of (void *). Needs to be corrected in the functions,
the prototypes in png.h, the example.c file, and libpng.txt and libpng.3
STATUS: Fixed in libpng-1.0.1c
17. May 10, 1998 -- DOCUMENTATION -- Greg
There are a number of incorrect usages of "which" and "it's" in the
comments.
STATUS:
Fixed in libpng-1.0.1c
18. May 20, 1998 -- BUG -- illegal use of side effects -- Magnus Holmgren
In libpng-1.0.1b several illegal uses of side effects were
introduced while tuning loops in pngrutil.c; also one in pngtrans.c.
STATUS:
Fixed in libpng-1.0.1d
19. May 20, 1998 -- ENHANCEMENT -- script for making DLL -- Bob Dellaca
Bob Dellaca contributed script for making PNG DLL on Borland C++ 4.5
STATUS:
Added to distribution in libpng-1.0.1d