From 5370d945aea8efff1abb6cea15d543c7114bc6d8 Mon Sep 17 00:00:00 2001 From: Pierre Lafievre Date: Mon, 9 Aug 2021 15:43:12 +0200 Subject: [PATCH] B #5477: GOCA - fix Del template method (#5480) Signed-off-by: Pierre Lafievre (cherry picked from commit c47c29c0632bd9fa4c4413425cd0076b152910d0) (cherry picked from commit 4cdadfbcf31902bc73646f222fc149c95310ef05) --- src/oca/go/src/goca/dynamic/dyntemplate.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/oca/go/src/goca/dynamic/dyntemplate.go b/src/oca/go/src/goca/dynamic/dyntemplate.go index a95ca4bc90..5edec5fc52 100644 --- a/src/oca/go/src/goca/dynamic/dyntemplate.go +++ b/src/oca/go/src/goca/dynamic/dyntemplate.go @@ -420,20 +420,34 @@ func (t *Template) AddPairToVec(vecKey, key string, value interface{}) error { // Del remove an element from Template objects func (t *Template) Del(key string) { - for i := 0; i < len(t.Elements); i++ { + + size := len(t.Elements) + for i := 0; i < size; { + if t.Elements[i].Key() != key { + i++ continue } + t.Elements = append(t.Elements[:i], t.Elements[i+1:]...) + size-- + } } // Del remove a pair from Template func (t *Vector) Del(key string) { - for i := 0; i < len(t.Pairs); i++ { - if t.Pairs[i].XMLName.Local != key { + + size := len(t.Pairs) + for i := 0; i < size; { + + if t.Pairs[i].Key() != key { + i++ continue } + t.Pairs = append(t.Pairs[:i], t.Pairs[i+1:]...) + size-- + } }