Fl_GIF_Image did not handle images with an incorrect number of
data bits (STR #914) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@4480 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
afbd833c04
commit
4fa1a3edb4
2
CHANGES
2
CHANGES
@ -2,6 +2,8 @@ CHANGES IN FLTK 1.1.7
|
|||||||
|
|
||||||
- Documentation fixes (STR #648, STR #692, STR #730, STR
|
- Documentation fixes (STR #648, STR #692, STR #730, STR
|
||||||
#744, STR #745, STR #942, STR #931)
|
#744, STR #745, STR #942, STR #931)
|
||||||
|
- Fl_GIF_Image did not handle images with an incorrect
|
||||||
|
number of data bits (STR #914)
|
||||||
- Fixed some plastic drawing artifacts (STR #906)
|
- Fixed some plastic drawing artifacts (STR #906)
|
||||||
- Fl_Help_View now draws the box outside the scrollbars,
|
- Fl_Help_View now draws the box outside the scrollbars,
|
||||||
like the other scrollable widgets (STR #871)
|
like the other scrollable widgets (STR #871)
|
||||||
|
@ -175,7 +175,6 @@ Fl_GIF_Image::Fl_GIF_Image(const char *infname) : Fl_Pixmap((char *const*)0) {
|
|||||||
if (ch&0x80) {
|
if (ch&0x80) {
|
||||||
// read local color map
|
// read local color map
|
||||||
int n = 2<<(ch&7);
|
int n = 2<<(ch&7);
|
||||||
if (n > ColorMapSize) ColorMapSize = n;
|
|
||||||
for (i=0; i < n; i++) {
|
for (i=0; i < n; i++) {
|
||||||
Red[i] = NEXTBYTE;
|
Red[i] = NEXTBYTE;
|
||||||
Green[i] = NEXTBYTE;
|
Green[i] = NEXTBYTE;
|
||||||
@ -183,7 +182,6 @@ Fl_GIF_Image::Fl_GIF_Image(const char *infname) : Fl_Pixmap((char *const*)0) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
CodeSize = NEXTBYTE+1;
|
CodeSize = NEXTBYTE+1;
|
||||||
|
|
||||||
break; // okay, this is the image we want
|
break; // okay, this is the image we want
|
||||||
} else {
|
} else {
|
||||||
Fl::warning("%s: unknown gif code 0x%02x", infname, i);
|
Fl::warning("%s: unknown gif code 0x%02x", infname, i);
|
||||||
@ -194,6 +192,13 @@ Fl_GIF_Image::Fl_GIF_Image(const char *infname) : Fl_Pixmap((char *const*)0) {
|
|||||||
while (blocklen>0) {while (blocklen--) {NEXTBYTE;} blocklen=NEXTBYTE;}
|
while (blocklen>0) {while (blocklen--) {NEXTBYTE;} blocklen=NEXTBYTE;}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (BitsPerPixel >= CodeSize)
|
||||||
|
{
|
||||||
|
// Workaround for broken GIF files...
|
||||||
|
BitsPerPixel = CodeSize - 1;
|
||||||
|
ColorMapSize = 1 << BitsPerPixel;
|
||||||
|
}
|
||||||
|
|
||||||
uchar *Image = new uchar[Width*Height];
|
uchar *Image = new uchar[Width*Height];
|
||||||
|
|
||||||
int YC = 0, Pass = 0; /* Used to de-interlace the picture */
|
int YC = 0, Pass = 0; /* Used to de-interlace the picture */
|
||||||
|
Loading…
Reference in New Issue
Block a user