func()

in string.go [305:336]


func (d *Decoder) readStringChunkData(tag byte) ([]byte, error) {
	charTotal, err := d.getStringLength(tag)
	if err != nil {
		return nil, perrors.WithStack(err)
	}

	data := make([]byte, charTotal*3)

	start := 0
	end := 0

	charCount := 0
	charRead := 0

	for charCount < charTotal {
		_, err = io.ReadFull(d.reader, data[end:end+charTotal-charCount])
		if err != nil {
			return nil, err
		}

		end += charTotal - charCount

		start, end, charRead, err = decode2utf8(d.reader, data, start, end)
		if err != nil {
			return nil, err
		}

		charCount += charRead
	}

	return append([]byte(nil), data[:end]...), nil
}