Loading core/java/org/microg/EntryPoint.java +23 −8 Original line number Diff line number Diff line Loading @@ -103,19 +103,23 @@ public final class EntryPoint { } try { Field creatorsField = findField(Parcel.class, "mCreators"); Field creatorsField = findFieldIfExists(Parcel.class, "mCreators"); if (creatorsField != null) { creatorsField.setAccessible(true); Map<?, ?> mCreators = (Map<?, ?>) creatorsField.get(null); if (mCreators != null) mCreators.clear(); } } catch (Exception e) { Log.e(TAG, "Couldn't clear Parcel mCreators: " + e); } try { Field creatorsField = findField(Parcel.class, "sPairedCreators"); Field creatorsField = findFieldIfExists(Parcel.class, "sPairedCreators"); if (creatorsField != null) { creatorsField.setAccessible(true); Map<?, ?> sPairedCreators = (Map<?, ?>) creatorsField.get(null); if (sPairedCreators != null) sPairedCreators.clear(); } } catch (Exception e) { Log.e(TAG, "Couldn't clear Parcel sPairedCreators: " + e); } Loading @@ -132,6 +136,17 @@ public final class EntryPoint { throw new NoSuchFieldException("Field '" + fieldName + "' not found in class hierarchy of " + Objects.requireNonNull(currentClass).getName()); } private static Field findFieldIfExists(Class<?> currentClass, String fieldName) { while (currentClass != null && !currentClass.equals(Object.class)) { try { return currentClass.getDeclaredField(fieldName); } catch (NoSuchFieldException ignored) { currentClass = currentClass.getSuperclass(); } } return null; } private static Field getBuildField(String name) { Field field; try { Loading Loading
core/java/org/microg/EntryPoint.java +23 −8 Original line number Diff line number Diff line Loading @@ -103,19 +103,23 @@ public final class EntryPoint { } try { Field creatorsField = findField(Parcel.class, "mCreators"); Field creatorsField = findFieldIfExists(Parcel.class, "mCreators"); if (creatorsField != null) { creatorsField.setAccessible(true); Map<?, ?> mCreators = (Map<?, ?>) creatorsField.get(null); if (mCreators != null) mCreators.clear(); } } catch (Exception e) { Log.e(TAG, "Couldn't clear Parcel mCreators: " + e); } try { Field creatorsField = findField(Parcel.class, "sPairedCreators"); Field creatorsField = findFieldIfExists(Parcel.class, "sPairedCreators"); if (creatorsField != null) { creatorsField.setAccessible(true); Map<?, ?> sPairedCreators = (Map<?, ?>) creatorsField.get(null); if (sPairedCreators != null) sPairedCreators.clear(); } } catch (Exception e) { Log.e(TAG, "Couldn't clear Parcel sPairedCreators: " + e); } Loading @@ -132,6 +136,17 @@ public final class EntryPoint { throw new NoSuchFieldException("Field '" + fieldName + "' not found in class hierarchy of " + Objects.requireNonNull(currentClass).getName()); } private static Field findFieldIfExists(Class<?> currentClass, String fieldName) { while (currentClass != null && !currentClass.equals(Object.class)) { try { return currentClass.getDeclaredField(fieldName); } catch (NoSuchFieldException ignored) { currentClass = currentClass.getSuperclass(); } } return null; } private static Field getBuildField(String name) { Field field; try { Loading