diff options
Diffstat (limited to 'internal/pkg/pkg.go')
| -rw-r--r-- | internal/pkg/pkg.go | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/internal/pkg/pkg.go b/internal/pkg/pkg.go index 15114fd7..99772c8f 100644 --- a/internal/pkg/pkg.go +++ b/internal/pkg/pkg.go @@ -589,12 +589,21 @@ func (c *Cache) unsafeIdent(a Artifact, encodeKind bool) ( h := sha512.New384() binary.LittleEndian.PutUint64(buf[:], uint64(a.Kind())) h.Write(buf[:wordSize]) - i := IContext{c, h} - a.Params(&i) - i.cache, i.h = nil, nil for _, dn := range idents { h.Write(dn[:]) } + kcBuf := c.getIdentBuf() + if kc, ok := a.(KnownChecksum); ok { + *(*Checksum)(kcBuf[:]) = kc.Checksum() + } else { + *(*Checksum)(kcBuf[:]) = Checksum{} + } + h.Write((*Checksum)(kcBuf[:])[:]) + c.putIdentBuf(kcBuf) + + i := IContext{c, h} + a.Params(&i) + i.cache, i.h = nil, nil h.Sum(buf[wordSize:wordSize]) return |
