From 95b5e996d6408f7c6176614c90578a4dcf762b0c Mon Sep 17 00:00:00 2001 From: twisti Date: Thu, 11 Nov 2004 14:37:01 +0000 Subject: [PATCH] Check for loading/linking errors in init_system_exceptions. --- exceptions.c | 45 +++++++++++++++++++++++++++++++++------------ exceptions.h | 4 ++-- src/vm/exceptions.c | 45 +++++++++++++++++++++++++++++++++------------ src/vm/exceptions.h | 4 ++-- 4 files changed, 70 insertions(+), 28 deletions(-) diff --git a/exceptions.c b/exceptions.c index 80ca5ba9c..65c9a9fbc 100644 --- a/exceptions.c +++ b/exceptions.c @@ -26,7 +26,7 @@ Authors: Christian Thalinger - $Id: exceptions.c 1441 2004-11-05 13:44:03Z twisti $ + $Id: exceptions.c 1480 2004-11-11 14:37:01Z twisti $ */ @@ -168,35 +168,56 @@ char *string_java_lang_VirtualMachineError = *******************************************************************************/ -void init_system_exceptions() +bool init_system_exceptions(void) { /* java/lang/Throwable */ class_java_lang_Throwable = class_new(utf_new_char(string_java_lang_Throwable)); - class_load(class_java_lang_Throwable); - class_link(class_java_lang_Throwable); + + if (!class_load(class_java_lang_Throwable)) + return false; + + if (!class_link(class_java_lang_Throwable)) + return false; + /* java/lang/Exception */ class_java_lang_Exception = class_new(utf_new_char(string_java_lang_Exception)); - class_load(class_java_lang_Exception); - class_link(class_java_lang_Exception); + + if (!class_load(class_java_lang_Exception)) + return false; + + if (!class_link(class_java_lang_Exception)) + return false; + /* java/lang/Error */ class_java_lang_Error = class_new(utf_new_char(string_java_lang_Error)); - class_load(class_java_lang_Error); - class_link(class_java_lang_Error); + + if (!class_load(class_java_lang_Error)) + return false; + + if (!class_link(class_java_lang_Error)) + return false; + /* java/lang/OutOfMemoryError */ class_java_lang_OutOfMemoryError = class_new(utf_new_char(string_java_lang_OutOfMemoryError)); - class_load(class_java_lang_OutOfMemoryError); - class_link(class_java_lang_OutOfMemoryError); + + if (!class_load(class_java_lang_OutOfMemoryError)) + return false; + + if (!class_link(class_java_lang_OutOfMemoryError)) + return false; + + return true; } @@ -206,9 +227,9 @@ static void throw_exception_exit_intern(bool doexit) classinfo *c; methodinfo *pss; - if (*exceptionptr) { - xptr = *exceptionptr; + xptr = *exceptionptr; + if (xptr) { /* clear exception, because we are calling jit code again */ *exceptionptr = NULL; diff --git a/exceptions.h b/exceptions.h index 94fc522ff..1726f68ea 100644 --- a/exceptions.h +++ b/exceptions.h @@ -26,7 +26,7 @@ Authors: Christian Thalinger - $Id: exceptions.h 1441 2004-11-05 13:44:03Z twisti $ + $Id: exceptions.h 1480 2004-11-11 14:37:01Z twisti $ */ @@ -96,7 +96,7 @@ extern char *string_java_lang_VirtualMachineError; /* load, link and compile exceptions used in the system */ -void init_system_exceptions(); +bool init_system_exceptions(void); /* exception throwing functions */ diff --git a/src/vm/exceptions.c b/src/vm/exceptions.c index 80ca5ba9c..65c9a9fbc 100644 --- a/src/vm/exceptions.c +++ b/src/vm/exceptions.c @@ -26,7 +26,7 @@ Authors: Christian Thalinger - $Id: exceptions.c 1441 2004-11-05 13:44:03Z twisti $ + $Id: exceptions.c 1480 2004-11-11 14:37:01Z twisti $ */ @@ -168,35 +168,56 @@ char *string_java_lang_VirtualMachineError = *******************************************************************************/ -void init_system_exceptions() +bool init_system_exceptions(void) { /* java/lang/Throwable */ class_java_lang_Throwable = class_new(utf_new_char(string_java_lang_Throwable)); - class_load(class_java_lang_Throwable); - class_link(class_java_lang_Throwable); + + if (!class_load(class_java_lang_Throwable)) + return false; + + if (!class_link(class_java_lang_Throwable)) + return false; + /* java/lang/Exception */ class_java_lang_Exception = class_new(utf_new_char(string_java_lang_Exception)); - class_load(class_java_lang_Exception); - class_link(class_java_lang_Exception); + + if (!class_load(class_java_lang_Exception)) + return false; + + if (!class_link(class_java_lang_Exception)) + return false; + /* java/lang/Error */ class_java_lang_Error = class_new(utf_new_char(string_java_lang_Error)); - class_load(class_java_lang_Error); - class_link(class_java_lang_Error); + + if (!class_load(class_java_lang_Error)) + return false; + + if (!class_link(class_java_lang_Error)) + return false; + /* java/lang/OutOfMemoryError */ class_java_lang_OutOfMemoryError = class_new(utf_new_char(string_java_lang_OutOfMemoryError)); - class_load(class_java_lang_OutOfMemoryError); - class_link(class_java_lang_OutOfMemoryError); + + if (!class_load(class_java_lang_OutOfMemoryError)) + return false; + + if (!class_link(class_java_lang_OutOfMemoryError)) + return false; + + return true; } @@ -206,9 +227,9 @@ static void throw_exception_exit_intern(bool doexit) classinfo *c; methodinfo *pss; - if (*exceptionptr) { - xptr = *exceptionptr; + xptr = *exceptionptr; + if (xptr) { /* clear exception, because we are calling jit code again */ *exceptionptr = NULL; diff --git a/src/vm/exceptions.h b/src/vm/exceptions.h index 94fc522ff..1726f68ea 100644 --- a/src/vm/exceptions.h +++ b/src/vm/exceptions.h @@ -26,7 +26,7 @@ Authors: Christian Thalinger - $Id: exceptions.h 1441 2004-11-05 13:44:03Z twisti $ + $Id: exceptions.h 1480 2004-11-11 14:37:01Z twisti $ */ @@ -96,7 +96,7 @@ extern char *string_java_lang_VirtualMachineError; /* load, link and compile exceptions used in the system */ -void init_system_exceptions(); +bool init_system_exceptions(void); /* exception throwing functions */ -- 2.25.1