diff --git a/generate/generate.go b/generate/generate.go index b0be848..0f21e37 100644 --- a/generate/generate.go +++ b/generate/generate.go @@ -628,7 +628,7 @@ func (this *Generator) generateDecodeBranch(hash [16]byte, typ Type, typeName st nn, err = this.generateErrorCheck() n += nn; if err != nil { return n, err } elementTagVar := this.newTemporaryVar("elementTag") - nn, err = this.iprintf("var %s uint64\n", lengthVar) + nn, err = this.iprintf("var %s tape.Tag\n", elementTagVar) n += nn; if err != nil { return n, err } nn, err = this.iprintf("%s, nn, err = decoder.ReadTag()\n", elementTagVar) n += nn; if err != nil { return n, err } @@ -681,7 +681,7 @@ func (this *Generator) generateDecodeBranch(hash [16]byte, typ Type, typeName st nn, err = this.iprintf("for index := range int(%s) {\n", lengthVar) n += nn; if err != nil { return n, err } this.push() - nn, err = this.generateDecodeValue(typ.Element, "", "(*this)[index]", elementTagVar) + nn, err = this.generateDecodeValue(typ.Element, "", "(&(*this)[index])", elementTagVar) n += nn; if err != nil { return n, err } this.pop() nn, err = this.iprintf("}\n") @@ -758,7 +758,7 @@ func (this *Generator) generateDecodeBranch(hash [16]byte, typ Type, typeName st // decode payload nn, err = this.generateDecodeValue( field.Type, "", - fmt.Sprintf("&(this.%s)", field.Name), fieldTagVar) + fmt.Sprintf("(&(this.%s))", field.Name), fieldTagVar) n += nn; if err != nil { return n, err } this.pop() }