diff --git a/src/org/thoughtcrime/securesms/crypto/MessageDisplayHelper.java b/src/org/thoughtcrime/securesms/crypto/MessageDisplayHelper.java index 229da3b7e..64e88aa10 100644 --- a/src/org/thoughtcrime/securesms/crypto/MessageDisplayHelper.java +++ b/src/org/thoughtcrime/securesms/crypto/MessageDisplayHelper.java @@ -34,17 +34,19 @@ public class MessageDisplayHelper { }; private static String checkCacheForBody(String body) { - if (decryptedBodyCache.containsKey(body)) { - String decryptedBody = decryptedBodyCache.get(body).get(); - if (decryptedBody != null) { - return decryptedBody; - } else { - decryptedBodyCache.remove(body); - return null; + synchronized (decryptedBodyCache) { + if (decryptedBodyCache.containsKey(body)) { + String decryptedBody = decryptedBodyCache.get(body).get(); + if (decryptedBody != null) { + return decryptedBody; + } else { + decryptedBodyCache.remove(body); + return null; + } } - } - return null; + return null; + } } public static String getDecryptedMessageBody(MasterCipher bodyCipher, String body) throws InvalidMessageException { @@ -55,11 +57,14 @@ public class MessageDisplayHelper { return cacheResult; String decryptedBody = bodyCipher.decryptBody(body.substring(Prefix.SYMMETRIC_ENCRYPT.length())); - decryptedBodyCache.put(body, new SoftReference(decryptedBody)); + + synchronized (decryptedBodyCache) { + decryptedBodyCache.put(body, new SoftReference(decryptedBody)); + } return decryptedBody; } return body; } -} +} \ No newline at end of file