CrackMe.apk
Download file
package com.facebook.imagepipeline.core;
import com.facebook.common.logging.FLog;
import com.facebook.common.references.CloseableReference;
import com.facebook.common.references.ResourceReleaser;
import com.facebook.common.references.SharedReference;
import com.facebook.imagepipeline.debug.CloseableReferenceLeakTracker;
import java.io.Closeable;
import java.io.PrintWriter;
import java.io.StringWriter;
import javax.annotation.Nullable;
public class CloseableReferenceFactory {
private final CloseableReference.LeakHandler mLeakHandler;
public CloseableReferenceFactory(final CloseableReferenceLeakTracker closeableReferenceLeakTracker) {
this.mLeakHandler = new CloseableReference.LeakHandler() {
public void reportLeak(SharedReference<Object> sharedReference, @Nullable Throwable th) {
closeableReferenceLeakTracker.trackCloseableReferenceLeak(sharedReference, th);
Object obj = sharedReference.get();
FLog.w("Fresco", "Finalized without closing: %x %x (type = %s).\nStack:\n%s", Integer.valueOf(System.identityHashCode(this)), Integer.valueOf(System.identityHashCode(sharedReference)), obj != null ? obj.getClass().getName() : "<value is null>", CloseableReferenceFactory.getStackTraceString(th));
}
public boolean requiresStacktrace() {
return closeableReferenceLeakTracker.isSet();
}
};
}
public <U extends Closeable> CloseableReference<U> create(U u) {
return CloseableReference.of(u, this.mLeakHandler);
}
public <T> CloseableReference<T> create(T t, ResourceReleaser<T> resourceReleaser) {
return CloseableReference.of(t, resourceReleaser, this.mLeakHandler);
}
/* access modifiers changed from: private */
public static String getStackTraceString(@Nullable Throwable th) {
if (th == null) {
return "";
}
StringWriter stringWriter = new StringWriter();
th.printStackTrace(new PrintWriter(stringWriter));
return stringWriter.toString();
}
}
Download file