fix to potential crash when reloading database

This commit is contained in:
Philipp Crocoll
2023-03-31 08:00:44 +02:00
parent cf222a2db1
commit 4910c73a5e
2 changed files with 31 additions and 14 deletions

View File

@@ -475,9 +475,12 @@ namespace keepass2android
builder.SetMessage(activity.GetString(Resource.String.AskReloadFile));
bool buttonPressed = false;
builder.SetPositiveButton(activity.GetString(Android.Resource.String.Yes),
(dlgSender, dlgEvt) =>
{
buttonPressed = true;
CurrentDb.ReloadRequested = true;
activity.SetResult(KeePass.ExitReloadDb);
activity.Finish();
@@ -490,6 +493,7 @@ namespace keepass2android
builder.SetNegativeButton(activity.GetString(Android.Resource.String.No), (dlgSender, dlgEvt) =>
{
buttonPressed = true;
if (actionOnResult != null)
{
actionOnResult(false);
@@ -502,8 +506,16 @@ namespace keepass2android
dialog.SetOnDismissListener(new Util.DismissListener(() =>
{
//dismiss can be called when we're calling activity.Finish() during button press.
//don't do anything then.
if (buttonPressed)
return;
if (actionOnResult != null)
{
actionOnResult(false);
actionOnResult = null;
}
}));
dialog.Show();

View File

@@ -77,8 +77,13 @@ namespace keepass2android.view
AddView(gv, lp);
}
private void PopulateView(View gv, PwGroup pw) {
private void PopulateView(View gv, PwGroup pw)
{
_pwGroup = pw;
Kp2aLog.Log($"Populating group view {_groupBaseActivity.IsFinishing} {pw.Name}");
if (_groupBaseActivity.IsFinishing)
return;
ImageView iv = (ImageView) gv.FindViewById(Resource.Id.icon);
Database db = App.Kp2a.FindDatabaseForElement(pw);