mirror of
https://github.com/vbatts/go-mtree.git
synced 2024-11-22 08:25:38 +00:00
check: creator.curSet pointer aliasing
When iterating over creator.DH.Entries using the variable e, and then setting creator.curSet to &e, this causes aliasing that results in the underlying Entry of creator.curSet to change on each iteration. Instead we want to get the address of the actual Entry in creator.DH.Entries. Signed-off-by: Stephen Chung <schung@redhat.com>
This commit is contained in:
parent
a29236e678
commit
c99862ee53
2 changed files with 6 additions and 3 deletions
4
check.go
4
check.go
|
@ -41,11 +41,11 @@ func Check(root string, dh *DirectoryHierarchy, keywords []string) (*Result, err
|
||||||
sort.Sort(byPos(creator.DH.Entries))
|
sort.Sort(byPos(creator.DH.Entries))
|
||||||
|
|
||||||
var result Result
|
var result Result
|
||||||
for _, e := range creator.DH.Entries {
|
for i, e := range creator.DH.Entries {
|
||||||
switch e.Type {
|
switch e.Type {
|
||||||
case SpecialType:
|
case SpecialType:
|
||||||
if e.Name == "/set" {
|
if e.Name == "/set" {
|
||||||
creator.curSet = &e
|
creator.curSet = &creator.DH.Entries[i]
|
||||||
} else if e.Name == "/unset" {
|
} else if e.Name == "/unset" {
|
||||||
creator.curSet = nil
|
creator.curSet = nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,7 +108,7 @@ func TestTimeComparison(t *testing.T) {
|
||||||
// This is the format of time from FreeBSD
|
// This is the format of time from FreeBSD
|
||||||
spec := `
|
spec := `
|
||||||
/set type=file time=5.000000000
|
/set type=file time=5.000000000
|
||||||
. type=dir
|
. type=dir
|
||||||
file time=5.000000000
|
file time=5.000000000
|
||||||
..
|
..
|
||||||
`
|
`
|
||||||
|
@ -122,6 +122,9 @@ func TestTimeComparison(t *testing.T) {
|
||||||
if err := os.Chtimes(fh.Name(), epoch, epoch); err != nil {
|
if err := os.Chtimes(fh.Name(), epoch, epoch); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
if err := os.Chtimes(dir, epoch, epoch); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
if err := fh.Close(); err != nil {
|
if err := fh.Close(); err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue