Closed JanuarYJL closed 2 years ago
当_length为0时,buffer[0]数组下标越界,在不报错的情况下进入下级函数会触发assert(length <= getBufferLength())断言。 debug模式下可复现报错,诱因是TC_Transceiver::doProtocolAnalysis函数中在调用完_onParserCallback之后,buff中的协议包已经完全处理,buff为空,此时调用isurplus = buff->getBuffers().size()产生越界处理。 同时出于效率考虑,将buff->getBuffers().size()调用改成buff->getBufferLength(),减少临时对象产生和内存的拷贝。
当_length为0时,buffer[0]数组下标越界,在不报错的情况下进入下级函数会触发assert(length <= getBufferLength())断言。 debug模式下可复现报错,诱因是TC_Transceiver::doProtocolAnalysis函数中在调用完_onParserCallback之后,buff中的协议包已经完全处理,buff为空,此时调用isurplus = buff->getBuffers().size()产生越界处理。 同时出于效率考虑,将buff->getBuffers().size()调用改成buff->getBufferLength(),减少临时对象产生和内存的拷贝。