[iostreams] Fixes for copy.hpp

Does this patch look correct? I have been trying to extend the copy algorithm using the Boost::parameter library, and these couple things looked wrong to me. Andrew Walrond --- /include/boost/iostreams/copy.hpp 2005-05-26 09:37:30.000000000 +0100 +++ copy.hpp 2006-01-11 14:51:15.000000000 +0000 @@ -49,7 +49,7 @@ typedef pair<char_type*, char_type*> pair_type; pair_type p1 = iostreams::input_sequence(src); pair_type p2 = iostreams::output_sequence(snk); - if (p1.second - p1.first < p2.second - p2.first) { + if (p1.second - p1.first <= p2.second - p2.first) { std::copy(p1.first, p1.second, p2.first); return static_cast<streamsize>(p1.second - p1.first); } else { @@ -92,9 +92,10 @@ while (!done) { streamsize amt; done = (amt = iostreams::read(src, buf.data(), buffer_size)) == -1; - std::copy(buf.data(), buf.data() + amt, p.first + total); - if (amt != -1) + if (amt != -1) { + std::copy(buf.data(), buf.data() + amt, p.first + total); total += amt; + } } return total; }

Hellooooo [cups ear; waits for echo....] Is iostreams actively maintained? Andrew Walrond On Wednesday 11 January 2006 15:13, Andrew Walrond wrote:
Does this patch look correct? I have been trying to extend the copy algorithm using the Boost::parameter library, and these couple things looked wrong to me.
Andrew Walrond
--- /include/boost/iostreams/copy.hpp 2005-05-26 09:37:30.000000000 +0100 +++ copy.hpp 2006-01-11 14:51:15.000000000 +0000 @@ -49,7 +49,7 @@ typedef pair<char_type*, char_type*> pair_type; pair_type p1 = iostreams::input_sequence(src); pair_type p2 = iostreams::output_sequence(snk); - if (p1.second - p1.first < p2.second - p2.first) { + if (p1.second - p1.first <= p2.second - p2.first) { std::copy(p1.first, p1.second, p2.first); return static_cast<streamsize>(p1.second - p1.first); } else { @@ -92,9 +92,10 @@ while (!done) { streamsize amt; done = (amt = iostreams::read(src, buf.data(), buffer_size)) == -1; - std::copy(buf.data(), buf.data() + amt, p.first + total); - if (amt != -1) + if (amt != -1) { + std::copy(buf.data(), buf.data() + amt, p.first + total); total += amt; + } } return total; } _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
participants (1)
-
Andrew Walrond