| |
| 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. |
| |
| 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 |