From 786d0a62d990cb5ea23dcc4de3e367c1138222a1 Mon Sep 17 00:00:00 2001 From: Michael Starzinger Date: Thu, 23 Oct 2008 18:32:03 +0200 Subject: [PATCH] Fixes PR113. * src/vm/class.cpp (class_get_modifiers): Remove ACC_SUPER bit from class flags when returning modifiers. --- src/vm/class.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/vm/class.cpp b/src/vm/class.cpp index 2e941b10b..aca2115c8 100644 --- a/src/vm/class.cpp +++ b/src/vm/class.cpp @@ -2113,6 +2113,13 @@ int32_t class_get_modifiers(classinfo *c, bool ignoreInnerClassesAttrib) classref_or_classinfo outer; utf *innername; int i; + int32_t flags; + + /* default to flags of passed class */ + + flags = c->flags; + + /* if requested we check if passed class is inner class */ if (!ignoreInnerClassesAttrib && (c->innerclasscount != 0)) { /* search for passed class as inner class */ @@ -2133,16 +2140,16 @@ int32_t class_get_modifiers(classinfo *c, bool ignoreInnerClassesAttrib) if (outer.any) /* return flags got from the outer class file */ - return c->innerclass[i].flags & ACC_CLASS_REFLECT_MASK; - else - return c->flags & ACC_CLASS_REFLECT_MASK; + flags = c->innerclass[i].flags; + + break; } } } - /* passed class is no inner class or it was not requested */ + /* remove ACC_SUPER bit from flags */ - return c->flags & ACC_CLASS_REFLECT_MASK; + return flags & ~ACC_SUPER & ACC_CLASS_REFLECT_MASK; } -- 2.25.1