attempt to fix some rare crashes

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/entities/MucOptions.java            | 2 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 8 
2 files changed, 7 insertions(+), 3 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/entities/MucOptions.java 🔗

@@ -335,7 +335,7 @@ public class MucOptions {
     }
 
     public boolean isContactInRoom(Contact contact) {
-        return findUserByRealJid(contact.getJid().asBareJid()) != null;
+        return contact != null && findUserByRealJid(contact.getJid().asBareJid()) != null;
     }
 
     public boolean isUserInRoom(Jid jid) {

src/main/java/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -1960,9 +1960,13 @@ public class XmppConnectionService extends Service {
      * This will find all conferences with the contact as member and also the conference that is the contact (that 'fake' contact is used to store the avatar)
      */
     public List<Conversation> findAllConferencesWith(Contact contact) {
-        ArrayList<Conversation> results = new ArrayList<>();
+        final ArrayList<Conversation> results = new ArrayList<>();
         for (final Conversation c : conversations) {
-            if (c.getMode() == Conversation.MODE_MULTI && (c.getJid().asBareJid().equals(contact.getJid().asBareJid()) || c.getMucOptions().isContactInRoom(contact))) {
+            if (c.getMode() != Conversation.MODE_MULTI) {
+                continue;
+            }
+            final MucOptions mucOptions = c.getMucOptions();
+            if (c.getJid().asBareJid().equals(contact.getJid().asBareJid()) || (mucOptions != null && mucOptions.isContactInRoom(contact))) {
                 results.add(c);
             }
         }