Ticket #6576: test2.cpp

File test2.cpp, 856 bytes (added by boris@…, 10 years ago)

Returns 0 instead of -1 when write-end is closed

Line 
1#include <boost/iostreams/device/file_descriptor.hpp>
2#include <boost/iostreams/filtering_stream.hpp>
3#include <boost/iostreams/get.hpp>
4#include <iostream>
5#include <Windows.h>
6
7using namespace boost::iostreams;
8
9int main()
10{
11 HANDLE handles[2];
12 SECURITY_ATTRIBUTES sa;
13 ZeroMemory(&sa, sizeof(sa));
14 sa.nLength = sizeof(sa);
15 CreatePipe(&handles[0], &handles[1], &sa, 0);
16
17 char buffer[2] = { 'a', 'b' };
18 DWORD written;
19 WriteFile(handles[1], buffer, 2, &written, NULL);
20 CloseHandle(handles[1]);
21
22 file_descriptor_source source(handles[0], close_handle);
23 filtering_istream is;
24 is.push(source);
25
26 std::cout << get(is) << std::endl; // 97
27 std::cout << get(is) << std::endl; // 98
28 std::cout << get(is) << std::endl; // should be: -1 (but is 0)
29 std::cout << get(is) << std::endl; // -1
30}