diff options
| author | Eli Schwartz <eschwartz93@gmail.com> | 2024-04-28 12:14:06 -0400 |
|---|---|---|
| committer | Jussi Pakkanen <jpakkane@gmail.com> | 2024-04-28 22:51:08 +0300 |
| commit | e5f32b74144b9f4a43304fa167899e202c5912b5 (patch) | |
| tree | cd3991e1fa1e5daae50cbe7915b58b62dc7c172e /mesonbuild/optinterpreter.py | |
| parent | 4f3a3e2efeb415fe83f9e858b010a36baf72b455 (diff) | |
| download | meson-e5f32b74144b9f4a43304fa167899e202c5912b5.tar.gz | |
catch build files that cannot be opened in utf8 mode and emit useful error
Previously, if a junked meson.build or native.ini was used we got a
lengthy traceback ending in UnicodeDecodeError.
Fixes: #13154
Fixes: #13156
Diffstat (limited to 'mesonbuild/optinterpreter.py')
| -rw-r--r-- | mesonbuild/optinterpreter.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/mesonbuild/optinterpreter.py b/mesonbuild/optinterpreter.py index 980dadd09..599da65d3 100644 --- a/mesonbuild/optinterpreter.py +++ b/mesonbuild/optinterpreter.py @@ -78,7 +78,11 @@ class OptionInterpreter: def process(self, option_file: str) -> None: try: with open(option_file, encoding='utf-8') as f: - ast = mparser.Parser(f.read(), option_file).parse() + code = f.read() + except UnicodeDecodeError as e: + raise mesonlib.MesonException(f'Malformed option file {option_file!r} failed to parse as unicode: {e}') + try: + ast = mparser.Parser(code, option_file).parse() except mesonlib.MesonException as me: me.file = option_file raise me |
