diff options
author | Bryce McKinlay <bryce@waitaki.otago.ac.nz> | 2001-10-23 05:42:03 +0000 |
---|---|---|
committer | Bryce McKinlay <bryce@gcc.gnu.org> | 2001-10-23 06:42:03 +0100 |
commit | afb2dec5269ed1cc728aed0a2cb169eef4ed66f3 (patch) | |
tree | bf8ec1fbae17015b582311573e8b7f51bcecfd33 /libjava/java/lang | |
parent | 187e37f9a62262da037e88c34d58557ce1fecc80 (diff) | |
download | gcc-afb2dec5269ed1cc728aed0a2cb169eef4ed66f3.zip gcc-afb2dec5269ed1cc728aed0a2cb169eef4ed66f3.tar.gz gcc-afb2dec5269ed1cc728aed0a2cb169eef4ed66f3.tar.bz2 |
prims.cc (_Jv_Abort): Always print error message using fprintf, don't try to allocate.
* prims.cc (_Jv_Abort): Always print error message using fprintf,
don't try to allocate.
(_Jv_CreateJavaVM): Set gcj::runTimeInitialized.
* include/jvm.h (gcj::runTimeInitialized): New variable declaration.
* java/lang/natClassLoader.cc (_Jv_RegisterClassHookDefault): Handle
duplicate class registration with JvFail if the runtime hasn't been
initialized yet.
From-SVN: r46424
Diffstat (limited to 'libjava/java/lang')
-rw-r--r-- | libjava/java/lang/natClassLoader.cc | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc index 3c2679b..d92a90c 100644 --- a/libjava/java/lang/natClassLoader.cc +++ b/libjava/java/lang/natClassLoader.cc @@ -14,6 +14,7 @@ details. */ #include <stdlib.h> #include <string.h> +#include <stdio.h> #include <gcj/cni.h> #include <jvm.h> @@ -452,7 +453,17 @@ _Jv_RegisterClassHookDefault (jclass klass) { // If you get this, it means you have the same class in two // different libraries. - throw new java::lang::VirtualMachineError (JvNewStringLatin1 ("class registered twice")); + char *message; + asprintf (&message, "Duplicate class registration: %s", + klass->name->data); + if (! gcj::runtimeInitialized) + JvFail (message); + else + { + java::lang::String *str = JvNewStringLatin1 (message); + free (message); + throw new java::lang::VirtualMachineError (str); + } } check_class = check_class->next; |