re PR libgcj/27294 (gij throws NullPointerException, when the interpreter is not...
authorTom Tromey <tromey@redhat.com>
Fri, 5 May 2006 15:05:20 +0000 (15:05 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Fri, 5 May 2006 15:05:20 +0000 (15:05 +0000)
PR libgcj/27294:
* java/lang/natVMClassLoader.cc (defineClass): Throw
VirtualMachineError if no interpreter configured.

From-SVN: r113554

libjava/ChangeLog
libjava/java/lang/natVMClassLoader.cc

index 19c06e16265507a1bc79bb5f8450be5f57d28cf0..d0992f6c6826c75dafce53e20913091e4c9ea253 100644 (file)
@@ -1,3 +1,9 @@
+2006-05-05  Tom Tromey  <tromey@redhat.com>
+
+       PR libgcj/27294:
+       * java/lang/natVMClassLoader.cc (defineClass): Throw
+       VirtualMachineError if no interpreter configured.
+
 2006-05-03  Andrew Haley  <aph@redhat.com>
 
        PR libgcj/27352
index bffbfc067db139ae955904241d21d9115ff1f794..95c1f15934c16790a07257b7e9f13583562f4dd4 100644 (file)
@@ -1,6 +1,6 @@
 // natVMClassLoader.cc - VMClassLoader native methods
 
-/* Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005  Free Software Foundation
+/* Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006  Free Software Foundation
 
    This file is part of libgcj.
 
@@ -34,6 +34,7 @@ details.  */
 #include <java/lang/StringBuffer.h>
 #include <java/lang/Runtime.h>
 #include <java/util/HashSet.h>
+#include <java/lang/VirtualMachineError.h>
 
 java::lang::Class *
 java::lang::VMClassLoader::defineClass (java::lang::ClassLoader *loader,
@@ -94,6 +95,20 @@ java::lang::VMClassLoader::defineClass (java::lang::ClassLoader *loader,
     }
 #endif // INTERPRETER
 
+  if (! klass)
+    {
+      StringBuffer *sb = new StringBuffer();
+      if (name)
+       {
+         sb->append(JvNewStringLatin1("found class file for class "));
+         sb->append(name);
+       }
+      else
+       sb->append(JvNewStringLatin1("found unnamed class file"));
+      sb->append(JvNewStringLatin1(", but no interpreter configured in this libgcj"));
+      throw new VirtualMachineError(sb->toString());
+    }
+
   return klass;
 }