mirror of
https://github.com/golang/go
synced 2024-11-11 19:51:37 -07:00
cmd/link: recompute heapPos after copyHeap
Immediately after a forward Seek, the offset we're writing to is beyond len(buf)+len(heap): |<--- buf --->|<--- heap --->| ^ off If we do a copyHeap at this point, the new heapPos should not be 0: |<---------- buf ----------->|<-heap->| ^ off Recompute it. For #42082. Change-Id: Icb3e4e1c7bf7d1fd3d76a2e0d7dfcb319c661534 Reviewed-on: https://go-review.googlesource.com/c/go/+/270941 Trust: Cherry Zhang <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
This commit is contained in:
parent
64ef84881f
commit
b194b5151f
@ -183,7 +183,9 @@ func (out *OutBuf) writeLoc(lenToWrite int64) (int64, []byte) {
|
||||
// See if our heap would grow to be too large, and if so, copy it to the end
|
||||
// of the mmapped area.
|
||||
if heapLen > maxOutBufHeapLen && out.copyHeap() {
|
||||
heapPos, heapLen, lenNeeded = 0, 0, lenToWrite
|
||||
heapPos -= heapLen
|
||||
lenNeeded = heapPos + lenToWrite
|
||||
heapLen = 0
|
||||
}
|
||||
out.heap = append(out.heap, make([]byte, lenNeeded-heapLen)...)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user