From 4f6b10e13c60bce18f06df8e12df6c364d7575f2 Mon Sep 17 00:00:00 2001 From: Timofey Kirillov Date: Tue, 21 Feb 2023 20:05:41 +0300 Subject: [PATCH] fix(staged-dockerfile): fix panic which occurs when using dependencies between images with multistages Fix images tree merging procedure in the case when merging multistaged dockerfile images sets. Signed-off-by: Timofey Kirillov --- pkg/build/image/images_sets.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/pkg/build/image/images_sets.go b/pkg/build/image/images_sets.go index a26a4a2f46..676c637a1e 100644 --- a/pkg/build/image/images_sets.go +++ b/pkg/build/image/images_sets.go @@ -3,13 +3,17 @@ package image type ImagesSets [][]*Image func NewImagesSetsBuilder() *ImagesSetsBuilder { - return &ImagesSetsBuilder{} + return &ImagesSetsBuilder{ + curSetInd: 0, + nextSetInd: 1, + } } type ImagesSetsBuilder struct { allImages []*Image imagesSets ImagesSets curSetInd int + nextSetInd int } func (is *ImagesSetsBuilder) GetImagesSets() ImagesSets { @@ -30,10 +34,15 @@ func (is *ImagesSetsBuilder) MergeImagesSets(newImagesSets [][]*Image) { is.allImages = append(is.allImages, img) } } + + nextSetInd := is.curSetInd + len(newImagesSets) + if nextSetInd > is.nextSetInd { + is.nextSetInd = nextSetInd + } } func (is *ImagesSetsBuilder) Next() { - is.curSetInd++ + is.curSetInd = is.nextSetInd } func (is *ImagesSetsBuilder) getImagesByInd(ind int) []*Image {