From 6fd0b3e83e14da85ffbfe405908a322f819a5f2e Mon Sep 17 00:00:00 2001 From: Thomas Meckel Date: Fri, 26 Jul 2019 11:28:13 +0200 Subject: [PATCH] Fixed a bug in ParseSnapshotData Added fuction GetSnapshots --- builder/virtualbox/common/snapshot.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/builder/virtualbox/common/snapshot.go b/builder/virtualbox/common/snapshot.go index 34a796092..e68540182 100644 --- a/builder/virtualbox/common/snapshot.go +++ b/builder/virtualbox/common/snapshot.go @@ -48,7 +48,7 @@ func ParseSnapshotData(snapshotData string) (*VBoxSnapshot, error) { parentStack.Push(node) } else if pathLen < pathLenCur { currentIndicator = matches[2] - for i := 0; i < pathLenCur-1; i++ { + for i := 0; i < pathLenCur-pathLen; i++ { parentStack.Pop() } } @@ -125,6 +125,21 @@ func (sn *VBoxSnapshot) GetRoot() *VBoxSnapshot { return node } +// GetSnapshots returns an array of all snapshots defined +func (sn *VBoxSnapshot) GetSnapshots() []*VBoxSnapshot { + var result []*VBoxSnapshot + root := sn.GetRoot() + ch := walker(root) + for { + node, ok := <-ch + if !ok { + break + } + result = append(result, node) + } + return result +} + // GetSnapshotsByName find all snapshots with a given name func (sn *VBoxSnapshot) GetSnapshotsByName(name string) []*VBoxSnapshot { var result []*VBoxSnapshot