diff --git a/lego/sys/codec/utils/int.go b/lego/sys/codec/utils/int.go index ba3c9b483..8eb08960b 100644 --- a/lego/sys/codec/utils/int.go +++ b/lego/sys/codec/utils/int.go @@ -163,8 +163,9 @@ func ReadUint32ForString(buf []byte) (ret uint32, n int, err error) { return } ret = uint32(ind) + n = 1 if len(buf) > 10 { - i := 0 + i := 1 ind2 := intDigits[buf[i]] if ind2 == invalidCharForNumber { n = i @@ -228,7 +229,7 @@ func ReadUint32ForString(buf []byte) (ret uint32, n int, err error) { return } } - for i := 1; i < len(buf); i++ { + for i := n; i < len(buf); i++ { ind = intDigits[buf[i]] if ind == invalidCharForNumber { n = i @@ -260,6 +261,7 @@ func ReadUint64ForString(buf []byte) (ret uint64, n int, err error) { return } ret = uint64(ind) + n = 1 if len(buf) > 10 { i := 0 ind2 := intDigits[buf[i]] @@ -325,7 +327,7 @@ func ReadUint64ForString(buf []byte) (ret uint64, n int, err error) { return } } - for i := 1; i < len(buf); i++ { + for i := n; i < len(buf); i++ { ind = intDigits[buf[i]] if ind == invalidCharForNumber { n = i diff --git a/modules/comp_model.go b/modules/comp_model.go index 27a8f3618..7323a50cb 100644 --- a/modules/comp_model.go +++ b/modules/comp_model.go @@ -411,7 +411,10 @@ func (this *MCompModel) GetList(uid string, data interface{}) (err error) { elemPtr = sliceType.UnsafeGetIndex(dptr, n) if *((*unsafe.Pointer)(elemPtr)) == nil { newPtr := sliceelemType.UnsafeNew() - decoder.DecodeForMapJson(newPtr, v) + if err = decoder.DecodeForMapJson(newPtr, v); err != nil { + log.Errorf("err:%v", err) + return + } *((*unsafe.Pointer)(elemPtr)) = newPtr } else { decoder.DecodeForMapJson(*((*unsafe.Pointer)(elemPtr)), v)