fix very rare NPE (race condition)

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java | 31 
src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java              |  2 
2 files changed, 20 insertions(+), 13 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java 🔗

@@ -102,18 +102,25 @@ public class PublishProfilePictureActivity extends XmppActivity implements XmppC
                 xmppConnectionService.publishAvatar(account, avatarUri, this);
             }
         });
-        this.cancelButton.setOnClickListener(v -> {
-            if (mInitialAccountSetup) {
-                final Intent intent = new Intent(getApplicationContext(), StartConversationActivity.class);
-                if (xmppConnectionService != null && xmppConnectionService.getAccounts().size() == 1) {
-                    intent.putExtra("init", true);
-                }
-                StartConversationActivity.addInviteUri(intent, getIntent());
-                intent.putExtra(EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString());
-                startActivity(intent);
-            }
-            finish();
-        });
+        this.cancelButton.setOnClickListener(
+                v -> {
+                    if (mInitialAccountSetup) {
+                        final Intent intent =
+                                new Intent(
+                                        getApplicationContext(), StartConversationActivity.class);
+                        if (xmppConnectionService != null
+                                && xmppConnectionService.getAccounts().size() == 1) {
+                            intent.putExtra("init", true);
+                        }
+                        StartConversationActivity.addInviteUri(intent, getIntent());
+                        if (account != null) {
+                            intent.putExtra(
+                                    EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString());
+                        }
+                        startActivity(intent);
+                    }
+                    finish();
+                });
         this.avatar.setOnClickListener(v -> chooseAvatar(this));
         this.defaultUri = PhoneHelper.getProfilePictureUri(getApplicationContext());
         if (savedInstanceState != null) {

src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java 🔗

@@ -1080,7 +1080,7 @@ public class XmppConnection implements Runnable {
         tagWriter.writeElement(authenticate);
     }
 
-    private List<String> extractMechanisms(final Element stream) {
+    private static List<String> extractMechanisms(final Element stream) {
         final ArrayList<String> mechanisms = new ArrayList<>(stream
                 .getChildren().size());
         for (final Element child : stream.getChildren()) {