Prechádzať zdrojové kódy

codec: Limit initial capacity of new maps to the MaxInitLen

Kudos to @akalin-keybase for finding it.
Ugorji Nwoke 7 rokov pred
rodič
commit
9d693b80ac
1 zmenil súbory, kde vykonal 2 pridanie a 1 odobranie
  1. 2 1
      codec/decode.go

+ 2 - 1
codec/decode.go

@@ -1505,7 +1505,8 @@ func (d *Decoder) kMap(f *codecFnInfo, rv reflect.Value) {
 	elemsep := d.esep
 	ti := f.ti
 	if rv.IsNil() {
-		rv.Set(makeMapReflect(ti.rt, containerLen))
+		rvlen := decInferLen(containerLen, d.h.MaxInitLen, int(ti.key.Size()+ti.elem.Size()))
+		rv.Set(makeMapReflect(ti.rt, rvlen))
 	}
 
 	if containerLen == 0 {