From f9b04e94bf7d32844c97a52008b98ef21f97fccb Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 22 Nov 2022 16:56:32 +0100 Subject: [PATCH] Prevent crash --- .../eu/faircode/email/FragmentCompose.java | 45 ++++++++++++------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 244c7fb9aa..47edeb5a6b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -1448,9 +1448,15 @@ public class FragmentCompose extends FragmentBase { etTo.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView adapterView, View view, int position, long id) { - Cursor cursor = (Cursor) adapterView.getAdapter().getItem(position); - int colEmail = cursor.getColumnIndex("email"); - selectIdentityForEmail(colEmail < 0 ? null : cursor.getString(colEmail)); + try { + Cursor cursor = (Cursor) adapterView.getAdapter().getItem(position); + if (cursor != null && cursor.getCount() > 0) { + int colEmail = cursor.getColumnIndex("email"); + selectIdentityForEmail(colEmail < 0 ? null : cursor.getString(colEmail)); + } + } catch (Throwable ex) { + Log.e(ex); + } } }); @@ -7482,22 +7488,27 @@ public class FragmentCompose extends FragmentBase { .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - int target = spTarget.getSelectedItemPosition(); - Cursor cursor = (Cursor) spGroup.getSelectedItem(); - if (target != INVALID_POSITION && cursor != null) { - long group = cursor.getLong(0); - String name = cursor.getString(1); + try { + int target = spTarget.getSelectedItemPosition(); + Cursor cursor = (Cursor) spGroup.getSelectedItem(); + if (target != INVALID_POSITION && + cursor != null && cursor.getCount() > 0) { + long group = cursor.getLong(0); + String name = cursor.getString(1); - Bundle args = getArguments(); - args.putLong("id", working); - args.putInt("target", target); - args.putLong("group", group); - args.putString("name", name); - args.putInt("type", spType.getSelectedItemPosition()); + Bundle args = getArguments(); + args.putLong("id", working); + args.putInt("target", target); + args.putLong("group", group); + args.putString("name", name); + args.putInt("type", spType.getSelectedItemPosition()); - sendResult(RESULT_OK); - } else - sendResult(RESULT_CANCELED); + sendResult(RESULT_OK); + } else + sendResult(RESULT_CANCELED); + } catch (Throwable ex) { + Log.e(ex); + } } }) .setNegativeButton(android.R.string.cancel, null)