Skip to content

Commit

Permalink
chore: stop recursive loop in TypeInfo error print
Browse files Browse the repository at this point in the history
  • Loading branch information
piux2 committed Oct 10, 2023
1 parent fa8eb77 commit df37615
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions tm2/pkg/amino/codec.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ func (info *TypeInfo) String() string {
buf.Write([]byte(fmt.Sprintf("ReprType:\"%v\",", info.ReprType)))
}
if info.Type.Kind() == reflect.Struct {
buf.Write([]byte(fmt.Sprintf("Fields:%v,", info.Fields)))
buf.Write([]byte(fmt.Sprintf("Fields:%#v,", info.Fields)))
}
buf.Write([]byte("}"))
return buf.String()
Expand Down Expand Up @@ -531,8 +531,12 @@ func (cdc *Codec) getTypeInfoFromFullnameRLock(fullname string, fopts FieldOptio
}

info, ok := cdc.fullnameToTypeInfo[fullname]
if !ok {
err = fmt.Errorf("amino: unrecognized concrete type full name %s", fullname)
if !ok {
if printLog {
err = fmt.Printf("unrecognized concrete type full name %s of %v", fullname, cdc.fullnameToTypeInfo)
}else{
err = fmt.Errorf("amino: unrecognized concrete type full name %s", fullname)
}
cdc.mtx.RUnlock()
return
}
Expand Down

1 comment on commit df37615

@piux2
Copy link
Contributor Author

@piux2 piux2 commented on df37615 Oct 10, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix the second issue in #1197

Before fix, if a Amino type is not imported through package.

runtime: goroutine stack exceeds 1000000000-byte limit
runtime: sp=0xc02050c458 stack=[0xc02050c000, 0xc04050c000]
fatal error: stack overflow

After fix, if a Amino type is not imported through package.
amino_test.go:28: unable to unmarshal with amino, unmarshal to std.Tx failed after 17 bytes (error reading slice contents: unrecognized concrete type full name vm.m_call of map[abci.BlockParams:TypeInfo{Type:abci.BlockParams,Registered:true,PointerPreferred:false,TypeURL:"/abci.BlockParams",ReprType:,Fields:[]amino.FieldInfo{amino.FieldInfo{Type:(*reflect.rtype)(0x104cfc920), TypeInfo:(*amino.TypeInfo)(0x1400011c6e0), Name:"MaxTxBytes", Index:0, ZeroValue:reflect.Value{typ:(*reflect.rtype)(0x104cfc920), ptr:(unsafe.Pointer)(0x105155080), flag:0x86}, UnpackedList:false, FieldOptions:amino.FieldOptions{JSONName:"MaxTxBytes", JSONOmitEmpty:false, BinFixed64:false, BinFixed32:false, BinFieldNum:0x1, Unsafe:false

Please sign in to comment.