From 0d9bf2757e71e64938b02c397d1d6e5666c5a213 Mon Sep 17 00:00:00 2001 From: Nigel Tao Date: Wed, 6 Mar 2013 10:08:46 +1100 Subject: [PATCH] image/jpeg: for progressive JPEGs, the first SOS segment doesn't necessarily contain all components. Fixes #4975. R=r, minux.ma, bradfitz CC=golang-dev https://golang.org/cl/7469043 --- src/pkg/image/jpeg/scan.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/pkg/image/jpeg/scan.go b/src/pkg/image/jpeg/scan.go index e3ae8ae441c..a69ed17489c 100644 --- a/src/pkg/image/jpeg/scan.go +++ b/src/pkg/image/jpeg/scan.go @@ -109,9 +109,11 @@ func (d *decoder) processSOS(n int) error { myy := (d.height + 8*v0 - 1) / (8 * v0) if d.img1 == nil && d.img3 == nil { d.makeImg(h0, v0, mxx, myy) - if d.progressive { - for i := 0; i < nComp; i++ { - compIndex := scan[i].compIndex + } + if d.progressive { + for i := 0; i < nComp; i++ { + compIndex := scan[i].compIndex + if d.progCoeffs[compIndex] == nil { d.progCoeffs[compIndex] = make([]block, mxx*myy*d.comp[compIndex].h*d.comp[compIndex].v) } }