From 4bba6729f85a3f99fcb05d8e5cc2e180bc9d4a90 Mon Sep 17 00:00:00 2001 From: Andrew Bonventre Date: Fri, 19 Jun 2015 13:29:58 -0400 Subject: [PATCH] image/gif: set default loop count to 0 when app ext. is not present It was otherwise not being preserved across specific Decode->Encode->Decode calls. Fixes #11287 Change-Id: I40602da7fa39ec67403bed52ff403f361c6171bb Reviewed-on: https://go-review.googlesource.com/11256 Reviewed-by: Nigel Tao --- src/image/gif/reader.go | 1 - src/image/gif/reader_test.go | 21 +++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/image/gif/reader.go b/src/image/gif/reader.go index 80cbccb6909ba..cf5af210a609c 100644 --- a/src/image/gif/reader.go +++ b/src/image/gif/reader.go @@ -271,7 +271,6 @@ func (d *decoder) readHeaderAndScreenDescriptor() error { } } // d.tmp[12] is the Pixel Aspect Ratio, which is ignored. - d.loopCount = -1 return nil } diff --git a/src/image/gif/reader_test.go b/src/image/gif/reader_test.go index 0d0017e5b809a..c294195b6f766 100644 --- a/src/image/gif/reader_test.go +++ b/src/image/gif/reader_test.go @@ -253,3 +253,24 @@ func TestPixelOutsidePaletteRange(t *testing.T) { try(t, b.Bytes(), want) } } + +func TestLoopCount(t *testing.T) { + data := []byte("GIF89a000\x00000,0\x00\x00\x00\n\x00" + + "\n\x00\x80000000\x02\b\xf01u\xb9\xfdal\x05\x00;") + img, err := DecodeAll(bytes.NewReader(data)) + if err != nil { + t.Fatal("DecodeAll:", err) + } + w := new(bytes.Buffer) + err = EncodeAll(w, img) + if err != nil { + t.Fatal("EncodeAll:", err) + } + img1, err := DecodeAll(w) + if err != nil { + t.Fatal("DecodeAll:", err) + } + if img.LoopCount != img1.LoopCount { + t.Errorf("loop count mismatch: %d vs %d", img.LoopCount, img1.LoopCount) + } +}