Opened 15 years ago

Last modified 14 years ago

#459 closed defect (fixed)

GIF animation not read correctly.

Reported by: packalen@… Owned by: warmerdam
Priority: high Milestone:
Component: GDAL_Raster Version: unspecified
Severity: normal Keywords:
Cc:

Description

GDAL does not read GIF animation properly. The number of returned bands is not 
correct (1) and dataset destruction fails (2). Also gdalinfo crashes (3). 

Reproduce the problem:
1. Open datatset and check the number of bands.
2. Call dataset destructor.
3. Execute gdalinfo GIF animation as an input parameter.

Attachments (1)

penguin.gif (20.6 KB) - added by packalen@… 15 years ago.
GIF animation

Download all attachments as: .zip

Change History (5)

Changed 15 years ago by packalen@…

Attachment: penguin.gif added

GIF animation

comment:1 Changed 15 years ago by warmerdam

I did a quick test with the latest CVS GDAL and displaying this file in 
OpenEV and it seemed to work fine.  Showed each step of the animation as
a seperate pseudocolored band.  There were some fixes a few months ago that
I think must have taken care of this issue. 

comment:2 Changed 15 years ago by packalen@…

I updated to gdal-cvs-040116 but the problem remains. The number of bands in 
the attached file should be 12. Try to run gdalinfo. Also my OpenEV 
(OpenEV_FW_162) crashes if you close GIF animation file in layers dialog. 
My platform is Windows and compiler is VC++ 7.1.

comment:3 Changed 15 years ago by warmerdam

Interesting, I see that I am actually using an external libungif on Linux
instead of the internal one you would be using on windows.  I will dig into 
this further and see if I can reproduce. 

Thanks!

comment:4 Changed 14 years ago by warmerdam

I have upgraded to libungif 4.1.0, and made several bug fixes in how 
colormaps are handled in files with multiple images and now the module
seems to work properly.

Libungif seems to have fallen out of maintenance, so there is not obvious 
upstream place to send fixes. 

gdalinfo on the file in questions works clean now with valgrind. 

Note: See TracTickets for help on using tickets.