Closed zhang275 closed 8 months ago
感谢!太细心了!这里对减到第一个缓存块的边界处理是有问题的。
我们修正一下,如果你感兴趣也非常欢迎提一个PR~
如果第一个 break 语句没有触发,并且此时又到达了 bufferlist.begin(),那么此时 offset 是过小的,因此个人感觉只需加一句赋值即可
if (cur_.first == buffer_list_.begin())
{
cur_.second = 0; // add
break;
}
是的,这样可以修复。感兴趣可以提个PR哈
在 RPCBuffer 的 readback 函数中,如果 offset 设置特别小,应该回退到头部处(即 cur.first 指向 begin(), second为 0),然而此时状态为 cur_.first 指向 begin(), second为begin()->buflen;如果此时调用 fetch,那么获取的是第二个缓存块,逻辑上来说,应该是第一个缓存块吧。