diff --git a/app/src/main/java/com/hippo/ehviewer/cache/AnyCache.java b/app/src/main/java/com/hippo/ehviewer/cache/AnyCache.java index 45009dbbc..b48f6d6b8 100644 --- a/app/src/main/java/com/hippo/ehviewer/cache/AnyCache.java +++ b/app/src/main/java/com/hippo/ehviewer/cache/AnyCache.java @@ -464,6 +464,7 @@ public abstract class AnyCache { public boolean put(String key, E value) { DiskLruCache.Editor editor = null; OutputStream os = null; + boolean completeEdit = false; try { editor = mDiskLruCache.edit(key); if (editor == null) { @@ -476,17 +477,19 @@ public abstract class AnyCache { final BufferedOutputStream buffOut = new BufferedOutputStream(os, IO_BUFFER_SIZE); boolean result = mParent.write(buffOut, value); + completeEdit = true; editor.commit(); return result; } else { // Can't get OutputStream + completeEdit = true; editor.abort(); return false; } } catch (IOException e) { Util.closeQuietly(os); try { - if (editor != null) { + if (!completeEdit && editor != null) { editor.abort(); } } catch (IOException ignored) {