func (ns *NameSection) Load(_ string, r reader.Reader) (err error) { defer func() { err = errutil.ErrorOrPanic(recover()) }() load := loader.L{r} count := load.Varuint32() ns.FunctionNames = make([]FunctionName, count) for i := range ns.FunctionNames { fn := &ns.FunctionNames[i] funNameLen := load.Varuint32() fn.FunName = string(load.Bytes(funNameLen)) localCount := load.Varuint32() fn.LocalNames = make([]string, localCount) for j := range fn.LocalNames { localNameLen := load.Varuint32() fn.LocalNames[j] = string(load.Bytes(localNameLen)) } } return }
func (uls UnknownLoaders) Load(r reader.Reader, payloadLen uint32) (err error) { defer func() { err = errutil.ErrorOrPanic(recover()) }() load := loader.L{r} nameLen := load.Varuint32() if nameLen > maxSectionNameLen { panic(errors.New("unknown section name is too long")) } name := string(load.Bytes(nameLen)) if f := uls[name]; f != nil { if err := f(name, load); err != nil { panic(err) } } else { if _, err := io.CopyN(ioutil.Discard, load, int64(payloadLen)); err != nil { panic(err) } } return }