diff --git a/src/fileformats.c b/src/fileformats.c index e68a365d..c775f869 100644 --- a/src/fileformats.c +++ b/src/fileformats.c @@ -3312,7 +3312,8 @@ void Save_GIF(T_IO_Context * context) GIF_remainder_bits=0; GIF_remainder_byte=0; - index=4096; +#define GIF_INVALID_CODE (65535) + index=GIF_INVALID_CODE; File_error=0; GIF_stop=0; @@ -3323,8 +3324,8 @@ void Save_GIF(T_IO_Context * context) GIF_set_code(clear); //256 for 8bpp for (start=0;start<4096;start++) { - alphabet_daughter[start]=4096; - alphabet_sister[start]=4096; + alphabet_daughter[start] = GIF_INVALID_CODE; + alphabet_sister[start] = GIF_INVALID_CODE; } ////////////////////////////////////////////// COMPRESSION LZW // @@ -3336,10 +3337,8 @@ void Save_GIF(T_IO_Context * context) { current_char=GIF_next_pixel(context, &IDB); - // On regarde si dans la table on aurait pas une chaîne - // équivalente à current_string+Caractere - - while ( (index0xFFF) + if (alphabet_free >= 4096) { - // Réintialisation de la table: + // clear alphabet GIF_set_code(clear); // 256 for 8bpp alphabet_free=clear+2; // 258 for 8bpp GIF_nb_bits =IDB.Nb_bits_pixel + 1; // 9 for 8bpp alphabet_max =clear+clear-1; // 511 for 8bpp for (start=0;start<4096;start++) { - alphabet_daughter[start]=4096; - alphabet_sister[start]=4096; + alphabet_daughter[start] = GIF_INVALID_CODE; + alphabet_sister[start] = GIF_INVALID_CODE; } } else if (alphabet_free>alphabet_max+1) @@ -3393,7 +3397,7 @@ void Save_GIF(T_IO_Context * context) alphabet_max=(1<