Commit 9b0cb287 by Tom Tromey Committed by Tom Tromey

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 <signal.h>.
	(main_init): Ignore SIGPIPE.  Fixes PR 51.

From-SVN: r29625
parent fe1dbf6c
1999-09-23 Tom Tromey <tromey@cygnus.com>
* prims.cc (main_init): New function.
(JvRunMain): Call it.
(_Jv_RunMain): Likewise.
Include <signal.h>.
(main_init): Ignore SIGPIPE. Fixes PR 51.
1999-09-22 Tom Tromey <tromey@cygnus.com> 1999-09-22 Tom Tromey <tromey@cygnus.com>
* libgcj.spec.in: Use `jc1' spec, not `cc1' spec. * libgcj.spec.in: Use `jc1' spec, not `cc1' spec.
......
...@@ -14,6 +14,7 @@ details. */ ...@@ -14,6 +14,7 @@ details. */
#include <stdarg.h> #include <stdarg.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <signal.h>
#pragma implementation "gcj/array.h" #pragma implementation "gcj/array.h"
...@@ -595,8 +596,8 @@ static java::lang::ThreadGroup *main_group; ...@@ -595,8 +596,8 @@ static java::lang::ThreadGroup *main_group;
// The primary thread. // The primary thread.
static java::lang::Thread *main_thread; static java::lang::Thread *main_thread;
void static void
JvRunMain (jclass klass, int argc, const char **argv) main_init (void)
{ {
INIT_SEGV; INIT_SEGV;
#ifdef HANDLE_FPE #ifdef HANDLE_FPE
...@@ -612,6 +613,19 @@ JvRunMain (jclass klass, int argc, const char **argv) ...@@ -612,6 +613,19 @@ JvRunMain (jclass klass, int argc, const char **argv)
LTDL_SET_PRELOADED_SYMBOLS (); LTDL_SET_PRELOADED_SYMBOLS ();
#endif #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); arg_vec = JvConvertArgv (argc - 1, argv + 1);
main_group = new java::lang::ThreadGroup (23); main_group = new java::lang::ThreadGroup (23);
main_thread = new java::lang::FirstThread (main_group, klass, arg_vec); main_thread = new java::lang::FirstThread (main_group, klass, arg_vec);
...@@ -625,19 +639,7 @@ JvRunMain (jclass klass, int argc, const char **argv) ...@@ -625,19 +639,7 @@ JvRunMain (jclass klass, int argc, const char **argv)
void void
_Jv_RunMain (const char *class_name, int argc, const char **argv) _Jv_RunMain (const char *class_name, int argc, const char **argv)
{ {
INIT_SEGV; main_init ();
#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
arg_vec = JvConvertArgv (argc - 1, argv + 1); arg_vec = JvConvertArgv (argc - 1, argv + 1);
main_group = new java::lang::ThreadGroup (23); main_group = new java::lang::ThreadGroup (23);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment