Patch: FYI: Fix for `gij -jar' bug

Tom Tromey tromey@redhat.com
Wed Nov 7 15:35:00 GMT 2001


I'm checking this in.

So much for cleaning up the init code.  This fixes the bug Nic found,
and it does remove some small amount of ugliness.

Tom

Index: ChangeLog
from  Tom Tromey  <tromey@redhat.com>
	* prims.cc (_Jv_RunMain): Use `using' to simplify code.  Set
	_Jv_Jar_Class_Path early.

Index: prims.cc
===================================================================
RCS file: /cvs/gcc/gcc/libjava/prims.cc,v
retrieving revision 1.63
diff -u -r1.63 prims.cc
--- prims.cc 2001/12/11 04:03:57 1.63
+++ prims.cc 2001/12/13 02:52:18
@@ -994,6 +994,10 @@
 
   try
     {
+      // Set this very early so that it is seen when java.lang.System
+      // is initialized.
+      if (is_jar)
+	_Jv_Jar_Class_Path = strdup (name);
       _Jv_CreateJavaVM (NULL);
 
       // Get the Runtime here.  We want to initialize it before searching
@@ -1002,20 +1006,12 @@
 
       arg_vec = JvConvertArgv (argc - 1, argv + 1);
 
+      using namespace gnu::gcj::runtime;
       if (klass)
-	main_thread = new gnu::gcj::runtime::FirstThread (klass, arg_vec);
+	main_thread = new FirstThread (klass, arg_vec);
       else
-	main_thread = new gnu::gcj::runtime::FirstThread 
-			(JvNewStringLatin1 (name), arg_vec, is_jar);
-
-      if (is_jar)
-	{
-	  // We need a new ClassLoader because the classpath must be the
-	  // jar file only.  The easiest way to do this is to lose our
-	  // reference to the previous classloader.
-	  _Jv_Jar_Class_Path = strdup (name);
-	  gnu::gcj::runtime::VMClassLoader::instance = NULL;
-	}
+	main_thread = new FirstThread (JvNewStringLatin1 (name),
+				       arg_vec, is_jar);
     }
   catch (java::lang::Throwable *t)
     {



More information about the Java-patches mailing list