diff --git a/input/dispatcher.hpp b/input/dispatcher.hpp index dd6fb6bf6d..2cd1ed5ae2 100644 --- a/input/dispatcher.hpp +++ b/input/dispatcher.hpp @@ -47,7 +47,23 @@ struct Dispatcher : Mangle::Input::Event const _O &list = map.getList(index); _O::const_iterator it; for(it = list.begin(); it != list.end(); it++) - funcs.call(*it, p); + { + //catch exceptions thrown in the input handlers so that pressing a key + //doesn't cause OpenMw to crash + try + { + funcs.call(*it, p); + } + catch(const std::exception& e) + { + std::cerr << "Exception in input handler: " << e.what() << std::endl; + } + catch(...) + { + std::cerr << "Unknown exception in input handler" << std::endl; + } + + } } };