KNOWNBUG 3.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113

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

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, count;
                  istop = s->a*s->b;
                  for(i=0; i<istop; i++)

      STATUS: Mostly done in libpng-1.0.1a, done for all important loops.

   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: Will do in libpng-1.0.1b

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