[Commits] [wesnoth/wesnoth] f7c34d: Don't catch config::error in config_cache::read_co...
GitHub
noreply at github.com
Sun Jun 8 21:10:11 UTC 2014
Branch: refs/heads/master
Home: https://github.com/wesnoth/wesnoth
Commit: f7c34dfaad55d029969e585d07977058b60e65d9
https://github.com/wesnoth/wesnoth/commit/f7c34dfaad55d029969e585d07977058b60e65d9
Author: Ignacio R. Morelle <shadowm at wesnoth.org>
Date: 2014-06-08 (Sun, 08 Jun 2014)
Changed paths:
M src/config_cache.cpp
Log Message:
-----------
Don't catch config::error in config_cache::read_configs()
Reverts a bit of commit d6dfec6151fb6eb5dd2d9f2d96920f1a9d7ec1ca to fix
a regression affecting both master and 1.12 since after version 1.11.14
which was causing WML validity errors to not abort the WML load process
or result in a message to the user in the GUI.
The WML parser and preprocessor throw config::error and
preproc_config::error to signal callers of issues with user input (WML
documents, in this case).
We need any exceptions thrown by the WML parser or preprocessor to
propagate upstream so they can be caught by the code responsible for
initiating the sequence so it can best decide how to present them to the
user. For example, the game_config_manager class will format and pass
them to gui2::twml_error so that the user can be informed of errors in
an add-on or mainline through the GUI.
Because config_cache::read_configs() was catching the exception and not
propagating it upstream due to a change that's part of the
aforementioned commit, this sequence was broken, and while the error was
reported to stderr, the game continued as normal in most cases with
a malformed half-parsed WML tree, resulting in all kinds of misbehavior.
This issue was originally reported in the forums by SkyOne:
<http://r.wesnoth.org/p571380>
More information about the Commits
mailing list