diff --git a/Tests/test_file_gif.py b/Tests/test_file_gif.py index 90943ac8f69..198e1b16277 100644 --- a/Tests/test_file_gif.py +++ b/Tests/test_file_gif.py @@ -74,10 +74,10 @@ def test_bilevel(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 e9c6c314918..a0fef993320 100644 --- a/src/libImaging/GifEncode.c +++ b/src/libImaging/GifEncode.c @@ -233,8 +233,13 @@ ImagingGifEncode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) } } - - this = state->buffer[state->x++]; + /* Potential special case for xsize==1 */ + if (state->x < state->xsize) { + this = state->buffer[state->x++]; + } else { + EMIT_RUN(label0); + break; + } if (this == context->last) { context->count++;