diff --git a/Tests/test_file_gif.py b/Tests/test_file_gif.py index 90943ac8f..198e1b162 100644 --- a/Tests/test_file_gif.py +++ b/Tests/test_file_gif.py @@ -74,10 +74,10 @@ def test_optimize(): im.save(test_file, "GIF", optimize=optimize) return len(test_file.getvalue()) - assert test_grayscale(0) == 800 - assert test_grayscale(1) == 44 - assert test_bilevel(0) == 800 - assert test_bilevel(1) == 800 + assert test_grayscale(0) == 799 + assert test_grayscale(1) == 43 + assert test_bilevel(0) == 799 + assert test_bilevel(1) == 799 def test_optimize_correctness(): diff --git a/src/libImaging/GifEncode.c b/src/libImaging/GifEncode.c index e9c6c3149..9f22add24 100644 --- a/src/libImaging/GifEncode.c +++ b/src/libImaging/GifEncode.c @@ -233,6 +233,13 @@ ImagingGifEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) } } + /* Potential special case for xsize==1 */ + if (state->x < state->xsize) { + this = state->buffer[state->x++]; + } else { + EMIT_RUN(label0); + break; + } this = state->buffer[state->x++];