The unified diff between revisions [3099ff90..] and [e9aa88ea..] is displayed below. It can also be downloaded as a raw diff.
This diff has been restricted to the following files: 'main.cc'
#
#
# patch "main.cc"
# from [ca8383ced00bdb686905f58eaeac7b1446347219]
# to [93c14a170425bd2be15e68d0f4eed476f9b77144]
#
============================================================
--- main.cc ca8383ced00bdb686905f58eaeac7b1446347219
+++ main.cc 93c14a170425bd2be15e68d0f4eed476f9b77144
@@ -260,21 +260,28 @@ main_with_signal_handlers(int argc, char
{
typedef struct sigaction* sigaction_ptr;
static struct sigaction all_signals_action;
+ static struct sigaction ignore_signals_action;
struct sigaction old_SIGFPE_action;
struct sigaction old_SIGTRAP_action;
struct sigaction old_SIGSEGV_action;
struct sigaction old_SIGBUS_action;
struct sigaction old_SIGABRT_action;
+ struct sigaction old_SIGPIPE_action;
all_signals_action.sa_flags = 0;
all_signals_action.sa_handler = &unix_style_signal_handler;
sigemptyset(&all_signals_action.sa_mask);
+ ignore_signals_action.sa_flags = 0;
+ ignore_signals_action.sa_handler = SIG_IGN;
+ sigemptyset(&ignore_signals_action.sa_mask);
+
sigaction(SIGFPE , &all_signals_action, &old_SIGFPE_action);
sigaction(SIGTRAP, &all_signals_action, &old_SIGTRAP_action);
sigaction(SIGSEGV, &all_signals_action, &old_SIGSEGV_action);
sigaction(SIGBUS , &all_signals_action, &old_SIGBUS_action);
sigaction(SIGABRT, &all_signals_action, &old_SIGABRT_action);
+ sigaction(SIGPIPE, &ignore_signals_action, &old_SIGPIPE_action);
int result = 0;
bool trapped_signal = false;
@@ -315,6 +322,7 @@ main_with_signal_handlers(int argc, char
sigaction(SIGSEGV, &old_SIGSEGV_action, sigaction_ptr());
sigaction(SIGBUS , &old_SIGBUS_action , sigaction_ptr());
sigaction(SIGABRT, &old_SIGABRT_action, sigaction_ptr());
+ sigaction(SIGPIPE, &old_SIGPIPE_action, sigaction_ptr());
if(trapped_signal)
throw unix_signal_exception(em);