You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ge...@apache.org on 2006/11/05 20:25:55 UTC

svn commit: r471500 - /incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp

Author: geirm
Date: Sun Nov  5 11:25:55 2006
New Revision: 471500

URL: http://svn.apache.org/viewvc?view=rev&rev=471500
Log:
HARMONY-1918

Throw verifyError when class extends a final class

Ubuntu 6 - smoke, c-unit, ~kernel


Modified:
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp?view=diff&rev=471500&r1=471499&r2=471500
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/classloader.cpp Sun Nov  5 11:25:55 2006
@@ -473,8 +473,16 @@
             }
             return false;
         }
-        if(class_is_interface(superClass) || class_is_final(superClass)) {
-            REPORT_FAILED_CLASS_CLASS(this, clss, "java/lang/IncompatibleClassChangeError", clss->name->bytes);
+        if(class_is_interface(superClass)) {
+            REPORT_FAILED_CLASS_CLASS(this, clss, "java/lang/IncompatibleClassChangeError",
+                "class " << clss->name->bytes << " has interface "
+                << superClass->name->bytes << " as super class");
+            return false;
+        }
+        if(class_is_final(superClass)) {
+            REPORT_FAILED_CLASS_CLASS(this, clss, "java/lang/VerifyError",
+                clss->name->bytes << " : try to inherit final class "
+                << superClass->name->bytes);
             return false;
         }
         if(!class_verify(env, superClass)) return false;