From 9b0cb287065a70bba85684b82bc1a8ca95bec50a Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 23 Sep 1999 18:50:59 +0000 Subject: [PATCH] re GNATS gcj/51 (Writing on OutputStream of bad Socket kills app with "Broken pipe") * prims.cc (main_init): New function. (JvRunMain): Call it. (_Jv_RunMain): Likewise. Include . (main_init): Ignore SIGPIPE. Fixes PR 51. From-SVN: r29625 --- libjava/ChangeLog | 8 ++++++++ libjava/prims.cc | 32 +++++++++++++++++--------------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 133fbf323f6..906d69b0ca9 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,11 @@ +1999-09-23 Tom Tromey + + * prims.cc (main_init): New function. + (JvRunMain): Call it. + (_Jv_RunMain): Likewise. + Include . + (main_init): Ignore SIGPIPE. Fixes PR 51. + 1999-09-22 Tom Tromey * libgcj.spec.in: Use `jc1' spec, not `cc1' spec. diff --git a/libjava/prims.cc b/libjava/prims.cc index 39d8d763d76..39357a24d85 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -14,6 +14,7 @@ details. */ #include #include #include +#include #pragma implementation "gcj/array.h" @@ -595,8 +596,8 @@ static java::lang::ThreadGroup *main_group; // The primary thread. static java::lang::Thread *main_thread; -void -JvRunMain (jclass klass, int argc, const char **argv) +static void +main_init (void) { INIT_SEGV; #ifdef HANDLE_FPE @@ -612,6 +613,19 @@ JvRunMain (jclass klass, int argc, const char **argv) LTDL_SET_PRELOADED_SYMBOLS (); #endif + // FIXME: we only want this on POSIX systems. + struct sigaction act; + act.sa_handler = SIG_IGN; + sigemptyset (&act.sa_mask); + act.sa_flags = 0; + sigaction (SIGPIPE, &act, NULL); +} + +void +JvRunMain (jclass klass, int argc, const char **argv) +{ + main_init (); + arg_vec = JvConvertArgv (argc - 1, argv + 1); main_group = new java::lang::ThreadGroup (23); main_thread = new java::lang::FirstThread (main_group, klass, arg_vec); @@ -625,19 +639,7 @@ JvRunMain (jclass klass, int argc, const char **argv) void _Jv_RunMain (const char *class_name, int argc, const char **argv) { - INIT_SEGV; -#ifdef HANDLE_FPE - INIT_FPE; -#else - arithexception = new java::lang::ArithmeticException - (JvNewStringLatin1 ("/ by zero")); -#endif - - no_memory = new java::lang::OutOfMemoryError; - -#ifdef USE_LTDL - LTDL_SET_PRELOADED_SYMBOLS (); -#endif + main_init (); arg_vec = JvConvertArgv (argc - 1, argv + 1); main_group = new java::lang::ThreadGroup (23); -- 2.30.2