From 1058a848dcd220965dd4d126eb9f4159782dd586 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 6 Jan 2006 01:03:45 +0000 Subject: natThread.cc (finish_): Don't clear 'group'. * java/lang/natThread.cc (finish_): Don't clear 'group'. * sources.am, Makefile.in: Rebuilt. * java/lang/Runtime.java (exit): Merged with Classpath. (runShutdownHooks): New method from Classpath. * java/io/File.java (deleteOnExit): Use DeleteFileHelper, not FileDeleter. * gnu/gcj/runtime/FileDeleter.java: Removed. * java/lang/natRuntime.cc (runFinalizationForExit): New method. (exitInternal): Don't run finalizers or delete files. From-SVN: r109400 --- libjava/gnu/java/lang/natMainThread.cc | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'libjava/gnu/java') diff --git a/libjava/gnu/java/lang/natMainThread.cc b/libjava/gnu/java/lang/natMainThread.cc index 7e8e422..95626eb 100644 --- a/libjava/gnu/java/lang/natMainThread.cc +++ b/libjava/gnu/java/lang/natMainThread.cc @@ -1,6 +1,6 @@ // natMainThread.cc - Implementation of MainThread native methods. -/* Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation +/* Copyright (C) 1998, 1999, 2000, 2001, 2003, 2006 Free Software Foundation This file is part of libgcj. @@ -15,8 +15,11 @@ details. */ #include #include +#include #include +#include +#include typedef void main_func (jobject); @@ -45,4 +48,15 @@ gnu::java::lang::MainThread::call_main (void) main_func *real_main = (main_func *) meth->ncode; (*real_main) (args); + + // Note that we do thread cleanup here. We have to do this here and + // not in _Jv_RunMain; if we do if after the main thread has exited, + // our ThreadGroup will be null, and if Runtime.exit tries to create + // a new Thread (which it does when running shutdown hooks), it will + // eventually NPE due to this. + _Jv_ThreadWait (); + + int status = (int) ::java::lang::ThreadGroup::had_uncaught_exception; + ::java::lang::Runtime *runtime = ::java::lang::Runtime::getRuntime (); + runtime->exit (status); } -- cgit v1.1