mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-09 20:29:10 +02:00
Check the return value from pipe(2)
Starting from GCC 10 not checking this will produce a warning.
This commit is contained in:
@@ -66,7 +66,9 @@ StdIoCapture::StdIoCapture(boost::asio::io_context& io_context,
|
|||||||
original_fd_copy(dup(file_descriptor)) {
|
original_fd_copy(dup(file_descriptor)) {
|
||||||
// We'll use the second element of these two file descriptors to reopen
|
// We'll use the second element of these two file descriptors to reopen
|
||||||
// `file_descriptor`, and the first one to read the captured contents from
|
// `file_descriptor`, and the first one to read the captured contents from
|
||||||
::pipe(pipe_fd);
|
if (::pipe(pipe_fd) != 0) {
|
||||||
|
throw std::system_error(errno, std::system_category());
|
||||||
|
}
|
||||||
|
|
||||||
// We've already created a copy of the original file descriptor, so we can
|
// We've already created a copy of the original file descriptor, so we can
|
||||||
// reopen it using the newly created pipe
|
// reopen it using the newly created pipe
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ class StdIoCapture {
|
|||||||
*
|
*
|
||||||
* @param io_context The IO context to create the captured pipe stream on.
|
* @param io_context The IO context to create the captured pipe stream on.
|
||||||
* @param file_descriptor The file descriptor to remap.
|
* @param file_descriptor The file descriptor to remap.
|
||||||
|
*
|
||||||
|
* @throw std::system_error If the pipe could not be created.
|
||||||
*/
|
*/
|
||||||
StdIoCapture(boost::asio::io_context& io_context, int file_descriptor);
|
StdIoCapture(boost::asio::io_context& io_context, int file_descriptor);
|
||||||
|
|
||||||
@@ -111,6 +113,7 @@ class GroupBridge {
|
|||||||
* `create_logger_prefix()` function in `./group.cpp`.
|
* `create_logger_prefix()` function in `./group.cpp`.
|
||||||
*
|
*
|
||||||
* @throw boost::system::system_error If we can't listen on the socket.
|
* @throw boost::system::system_error If we can't listen on the socket.
|
||||||
|
* @throw std::system_error If the pipe could not be created.
|
||||||
*
|
*
|
||||||
* @note Creating an `GroupBridge` instance has the side effect that the
|
* @note Creating an `GroupBridge` instance has the side effect that the
|
||||||
* STDOUT and STDERR streams of the current process will be redirected to
|
* STDOUT and STDERR streams of the current process will be redirected to
|
||||||
|
|||||||
@@ -78,6 +78,11 @@ int __cdecl main(int argc, char* argv[]) {
|
|||||||
<< std::endl;
|
<< std::endl;
|
||||||
std::cerr << error.what() << std::endl;
|
std::cerr << error.what() << std::endl;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
} catch (const std::system_error& error) {
|
||||||
|
std::cerr << "Could not create pipe:" << std::endl;
|
||||||
|
std::cerr << error.what() << std::endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user