summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/debug/debugvw.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/debug/debugvw.cpp')
-rw-r--r--src/emu/debug/debugvw.cpp18
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 &)
{
}
}