关于ByteArray的bug(个人觉得是bug,不知道是不是理解错误)

这个quick里的writeRawByte的函数
function ByteArray:writeRawByte(__rawByte)
if self._pos > #self._buf+1 then
for i=#self._buf+1,self._pos-1 do
self._buf* = string.char(0)
end
end
self._buf = string.sub(__rawByte, 1,1)
self._pos = self._pos + 1
return self
end

当向_buff写入数据时 _pos+1了

这是quick获取Available数据的函数,
function ByteArray:getAvailable()
return #self._buf - self._pos + 1
end

所以现在我不管向_buf写入多少字节 getAvailable永远是0 因为_pos和_#self:_buf永远是同步+1的,_pos是没有什么意义的

–这是quick读取字节流的函数
function ByteArray:readBuf(__len)
–printf(“readBuf,len:%u, pos:%u”, __len, self._pos)
local __ba = self:getBytes(self._pos, self._pos + __len - 1)
self._pos = self._pos + __len
return __ba
end
在读取的时候 _pos + __len

按照我们做读取字节流的做法 writeByte时_pos是不加的, 而readByte时_pos需要加。这样getAvailable就是我们未读取过的字节流数据

所以我觉得 这个函数应该改成这样 只有_buf的长度加了 但是_pos不加
function ByteArray:writeRawByte(__rawByte)
if self._pos > #self._buf+1 then
for i=#self._buf+1,self._pos-1 do
self._buf* = string.char(0)
end
end
self._buf#self._buf + 1] = string.sub(__rawByte, 1,1)
return self
end

**