From bee7bcec37d358f7cd44f0e119f905ccfd1a20d8 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 3 Sep 2017 19:46:42 -0400 Subject: [PATCH] cache: overwrite archive crc/revision with stored version on mismatch --- cache/src/main/java/net/runelite/cache/fs/Archive.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cache/src/main/java/net/runelite/cache/fs/Archive.java b/cache/src/main/java/net/runelite/cache/fs/Archive.java index 6dd66c25de..76e652954c 100644 --- a/cache/src/main/java/net/runelite/cache/fs/Archive.java +++ b/cache/src/main/java/net/runelite/cache/fs/Archive.java @@ -149,11 +149,13 @@ public class Archive if (this.crc != res.crc) { logger.warn("crc mismatch for archive {}/{}", index.getId(), this.getArchiveId()); + this.setCrc(res.crc); } if (this.getWhirlpool() != null && !Arrays.equals(this.getWhirlpool(), res.whirlpool)) { logger.warn("whirlpool mismatch for archive {}", this.getArchiveId()); + this.setWhirlpool(res.whirlpool); } if (res.revision != -1 && this.getRevision() != res.revision) @@ -162,6 +164,11 @@ public class Archive logger.warn("revision mismatch for archive {}/{}, expected {} was {}", index.getId(), this.getArchiveId(), this.getRevision(), res.revision); + // I've seen this happen with vanilla caches where the + // revision in the index data differs from the revision + // stored for the archive data on disk... I assume this + // is more correct + this.setRevision(res.revision); } setCompression(res.compression);