diff options
| author | Eyal Itkin <eyal.itkin@gmail.com> | 2024-11-24 12:57:48 +0200 |
|---|---|---|
| committer | Jussi Pakkanen <jussi.pakkanen@mailbox.org> | 2025-11-25 12:14:46 +0200 |
| commit | 23657a4bec8b931b7534a102cc487fc075cc00cd (patch) | |
| tree | d61a5eab245eae0effda16d3e6bb09de89c9b34e | |
| parent | 02bbe3eaa4f667293c72401e634e56e9ffbc33c3 (diff) | |
| download | meson-23657a4bec8b931b7534a102cc487fc075cc00cd.tar.gz | |
Rewriter: Handle unknown write targets
Add error checks for cases in which the write target is unknown
and ensure all error cases indeed abort the execution to avoid
internal crash.
Resolves #13502.
Signed-off-by: Eyal Itkin <eyal.itkin@gmail.com>
| -rw-r--r-- | mesonbuild/rewriter.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/mesonbuild/rewriter.py b/mesonbuild/rewriter.py index 4a237bd7b..51846d075 100644 --- a/mesonbuild/rewriter.py +++ b/mesonbuild/rewriter.py @@ -539,16 +539,21 @@ class Rewriter: arg_node = node.args elif cmd['function'] == 'target': tmp_tgt = self.find_target(cmd['id']) - if tmp_tgt: - node = tmp_tgt.node - arg_node = node.args + if not tmp_tgt: + mlog.error('Unable to find the target', mlog.bold(cmd['id']), *self.on_error()) + return self.handle_error() + node = tmp_tgt.node + arg_node = node.args elif cmd['function'] == 'dependency': tmp_dep = self.find_dependency(cmd['id']) - if tmp_dep: - node = tmp_dep.node - arg_node = node.args + if not tmp_dep: + mlog.error('Unable to find the dependency', mlog.bold(cmd['id']), *self.on_error()) + return self.handle_error() + node = tmp_dep.node + arg_node = node.args if not node: - mlog.error('Unable to find the function node') + mlog.error('Unable to find the function node', *self.on_error()) + return self.handle_error() assert isinstance(node, FunctionNode) assert isinstance(arg_node, ArgumentNode) # Transform the key nodes to plain strings |
