- for (i = 0; i < c->innerclasscount; i++) {
- outer = c->innerclass[i].outer_class;
-
- /* check if outer_class is a classref or a real class and
- get the class name from the structure */
-
- outername = IS_CLASSREF(outer) ? outer.ref->name : outer.cls->name;
-
- /* outer class is this class */
-
- if ((outername == c->name) &&
- ((publicOnly == 0) || (c->innerclass[i].flags & ACC_PUBLIC)))
- declaredclasscount++;
- }
- }
-
- /* allocate Class[] and check for OOM */
-
- oa = builtin_anewarray(declaredclasscount, class_java_lang_Class);
-
- if (oa == NULL)
- return NULL;
-
- for (i = 0, pos = 0; i < c->innerclasscount; i++) {
- outer = c->innerclass[i].outer_class;
-
- /* check if outer_class is a classref or a real class and
- get the class name from the structure */
-
- outername = IS_CLASSREF(outer) ? outer.ref->name : outer.cls->name;
-
- /* outer class is this class */
-
- if ((outername == c->name) &&
- ((publicOnly == 0) || (c->innerclass[i].flags & ACC_PUBLIC))) {
- classinfo *inner;
-
- if ((inner = resolve_classref_or_classinfo_eager(
- c->innerclass[i].inner_class,
- false)) == NULL)
- return NULL;
-
- if (!(inner->state & CLASS_LINKED))
- if (!link_class(inner))
- return NULL;
-
- oa->data[pos++] = inner;
- }
- }