> I've experienced problems using asio::streambuf and am hoping someone can
> tell me if I'm using the class incorrectly. When I run this example code it
> segfaults. Why?
>
> To make things more confusing, this code works on Windows (Visual Studio
> 2008), but does not work on Linux (with gcc 4.4.1).
>
> -- Dylan
>
> #include <boost/asio.hpp>
> using namespace std;
>
> int main()
> {
> boost::asio::streambuf Stream;
>
> // Put 4 bytes into the streambuf...
> int SetValue = 0xaabbccdd;
> Stream.sputn(reinterpret_cast<const char*>(&SetValue),
> sizeof(SetValue));
>
> // Consume 3 of the bytes...
> Stream.consume(3);
> cout << Stream.size() << endl; // should output 1
>
> // Get the last byte...
> char GetValue;
> // -------------------------- The next line segfaults the program
> --------------------------
> Stream.sgetn(reinterpret_cast<char*>(&GetValue), sizeof(GetValue));
> cout << Stream.size() << endl; // should output 0
>
> return 0;
> }
If you write with: