Fix macro playing back crash issue

Fix crash issue while playing back macro if "find previous" and/or "find next"
button actions are/is recorded.

Also prevent from future crash if new commands in Find dialog are forgotten to be
treated.
This commit is contained in:
Don HO 2018-03-04 01:56:28 +01:00
parent 789cf387df
commit 9b565319e3

View File

@ -2529,6 +2529,8 @@ void FindReplaceDlg::setStatusbarMessage(const generic_string & msg, FindStatus
}
void FindReplaceDlg::execSavedCommand(int cmd, uptr_t intValue, generic_string stringValue)
{
try
{
switch (cmd)
{
@ -2572,6 +2574,25 @@ void FindReplaceDlg::execSavedCommand(int cmd, uptr_t intValue, generic_string s
processFindNext(_env->_str2Search.c_str());
nppParamInst->_isFindReplacing = false;
break;
case IDC_FINDNEXT:
{
nppParamInst->_isFindReplacing = true;
_options._whichDirection = DIR_DOWN;
processFindNext(_env->_str2Search.c_str());
nppParamInst->_isFindReplacing = false;
}
break;
case IDC_FINDPREV:
{
nppParamInst->_isFindReplacing = true;
_env->_whichDirection = DIR_UP;
processFindNext(_env->_str2Search.c_str());
nppParamInst->_isFindReplacing = false;
}
break;
case IDREPLACE:
nppParamInst->_isFindReplacing = true;
processReplace(_env->_str2Search.c_str(), _env->_str4Replace.c_str(), _env);
@ -2701,9 +2722,11 @@ void FindReplaceDlg::execSavedCommand(int cmd, uptr_t intValue, generic_string s
setStatusbarMessage(result, FSMessage);
break;
}
default:
throw std::runtime_error("Internal error: unknown saved command!");
}
delete _env;
_env = &_options;
break;
@ -2712,6 +2735,11 @@ void FindReplaceDlg::execSavedCommand(int cmd, uptr_t intValue, generic_string s
throw std::runtime_error("Internal error: unknown SnR command!");
}
}
catch (std::runtime_error err)
{
MessageBoxA(NULL, err.what(), "Play Macro Exception", MB_OK);
}
}
void FindReplaceDlg::setFindInFilesDirFilter(const TCHAR *dir, const TCHAR *filters)
{