id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 13584,"boost beast flat buffer move ctor, move assign and swap all ""cancel"" a prepare()",paul.d.rose@…,chris_kohlhoff,"The boost beast flat_buffer ""cancels"" any outstanding prepare() when being moved from or swapped. This seems like a very sane thing to do. However, boost::asio::async_read_until depends on calling prepare() on it's DynamicBuffer and then calling the corresponding commit() on a moved-to version. Flat buffer will (correctly) silently commit the minimum of the requested size and the size from the previous prepare(). When used with async_read_until, the commit is always zero, since the prepare was ""cancelled"" by the move. The flat_buffer code always sets last_ to out_ during a move or swap, which is what achieves what I am calling the ""cancel"" of the prepare(). I tested setting last_ to other.last_ in the move ctor, move assignment, and swap, and verified that asio::async_read_until now works with beast::flat_buffer On this report I set component=asio, because I couldn't find beast on the drop box. I'm working with 1.67 and g++ 7.30 on ubuntu 18.04 ",Bugs,new,To Be Determined,asio,Boost 1.67.0,Problem,,beast,