mirror of
https://github.com/Eaglercraft-TeaVM-Fork/eagler-teavm.git
synced 2024-12-22 08:14:09 -08:00
JIRA #334 - check for null classreader
This commit is contained in:
parent
d9c5b3fd04
commit
744eb39e6d
|
@ -335,14 +335,19 @@ public class ReflectClassImpl<T> implements ReflectClass<T> {
|
|||
@Override
|
||||
public ReflectField[] getFields() {
|
||||
if (fieldsCache == null) {
|
||||
Set<String> visited = new HashSet<>();
|
||||
fieldsCache = context.getClassSource()
|
||||
.getAncestors(classReader.getName())
|
||||
.flatMap(cls -> cls.getFields().stream().filter(fld -> fld.getLevel() == AccessLevel.PUBLIC))
|
||||
.filter(fld -> visited.add(fld.getName()))
|
||||
.map(fld -> context.getClass(ValueType.object(fld.getOwnerName()))
|
||||
.getDeclaredField(fld.getName()))
|
||||
.toArray(ReflectField[]::new);
|
||||
resolve();
|
||||
if (classReader == null) {
|
||||
fieldsCache = new ReflectField[0];
|
||||
} else {
|
||||
Set<String> visited = new HashSet<>();
|
||||
fieldsCache = context
|
||||
.getClassSource()
|
||||
.getAncestors(classReader.getName())
|
||||
.flatMap(cls -> cls.getFields().stream().filter(fld -> fld.getLevel() == AccessLevel.PUBLIC))
|
||||
.filter(fld -> visited.add(fld.getName()))
|
||||
.map(fld -> context.getClass(ValueType.object(fld.getOwnerName())).getDeclaredField(fld.getName()))
|
||||
.toArray(ReflectField[]::new);
|
||||
}
|
||||
}
|
||||
return fieldsCache.clone();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user