diff options
Diffstat (limited to 'src/emu/debug/debugvw.cpp')
-rw-r--r-- | src/emu/debug/debugvw.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/emu/debug/debugvw.cpp b/src/emu/debug/debugvw.cpp index 7412ddd2f60..fe997596137 100644 --- a/src/emu/debug/debugvw.cpp +++ b/src/emu/debug/debugvw.cpp @@ -509,9 +509,21 @@ bool debug_view_expression::recompute() { m_parsed.parse(m_string); } - catch (expression_error &) + catch (expression_error const &) { - m_parsed.parse(oldstring); + try + { + // If we got here because the user typed in a new expression, + // then going back to the previous expression should work + m_parsed.parse(oldstring); + } + catch (expression_error const &) + { + // If that didn't work, perhaps the user switched sources + // and the previous expression doesn't evaluate with the + // new symbol table. Try "0" as last resort + m_parsed.parse("0"); + } } } @@ -528,7 +540,7 @@ bool debug_view_expression::recompute() changed = true; } } - catch (expression_error &) + catch (expression_error const &) { } } |