mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: fix possible nil deref added in CL 270943
In the event allocSpan returned a nil, this would crash. Cleaned up the code and comments slightly, too. Change-Id: I6231d4b4c14218e6956b4a97a205adc3206f59ec Reviewed-on: https://go-review.googlesource.com/c/go/+/316429 Trust: David Chase <drchase@google.com> Run-TryBot: David Chase <drchase@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
parent
7f9febd4a1
commit
8a4b7294af
1 changed files with 10 additions and 8 deletions
|
|
@ -897,7 +897,8 @@ func (s spanAllocType) manual() bool {
|
|||
// spanclass indicates the span's size class and scannability.
|
||||
//
|
||||
// If needzero is true, the memory for the returned span will be zeroed.
|
||||
// The boolean returned indicates whether the returned span is zeroed.
|
||||
// The boolean returned indicates whether the returned span contains zeroes,
|
||||
// either because this was requested, or because it was already zeroed.
|
||||
func (h *mheap) alloc(npages uintptr, spanclass spanClass, needzero bool) (*mspan, bool) {
|
||||
// Don't do any operations that lock the heap on the G stack.
|
||||
// It might trigger stack growth, and the stack growth code needs
|
||||
|
|
@ -912,14 +913,15 @@ func (h *mheap) alloc(npages uintptr, spanclass spanClass, needzero bool) (*mspa
|
|||
s = h.allocSpan(npages, spanAllocHeap, spanclass)
|
||||
})
|
||||
|
||||
isZeroed := s.needzero == 0
|
||||
if s != nil {
|
||||
if needzero && s.needzero != 0 {
|
||||
memclrNoHeapPointers(unsafe.Pointer(s.base()), s.npages<<_PageShift)
|
||||
isZeroed = true
|
||||
}
|
||||
s.needzero = 0
|
||||
if s == nil {
|
||||
return nil, false
|
||||
}
|
||||
isZeroed := s.needzero == 0
|
||||
if needzero && !isZeroed {
|
||||
memclrNoHeapPointers(unsafe.Pointer(s.base()), s.npages<<_PageShift)
|
||||
isZeroed = true
|
||||
}
|
||||
s.needzero = 0
|
||||
return s, isZeroed
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue