backend/ninja: Fix bug in NinjaRule.length_estimate
The code would create a dictionary that was of type `str : list[str] | str | None`. Then would later try to call `len(' '.join(dict[key]))`. This would result in two different bugs: 1. If the value is `None` it would except, since None isn't iterable and cannot be converted to a string 2. If the value was a string, then it would double the length of the actual string and return that, by adding a space between each character
This commit is contained in:
parent
fb5a0b4b61
commit
cf0fecfcef
|
@ -278,14 +278,13 @@ class NinjaRule:
|
|||
# determine variables
|
||||
# this order of actions only approximates ninja's scoping rules, as
|
||||
# documented at: https://ninja-build.org/manual.html#ref_scope
|
||||
ninja_vars: T.Dict[str, T.Union[T.List[str], T.Optional[str]]] = {}
|
||||
for e in elems:
|
||||
name, value = e
|
||||
ninja_vars[name] = value
|
||||
ninja_vars['deps'] = self.deps
|
||||
ninja_vars['depfile'] = self.depfile
|
||||
ninja_vars['in'] = infiles
|
||||
ninja_vars['out'] = outfiles
|
||||
ninja_vars = dict(elems)
|
||||
if self.deps is not None:
|
||||
ninja_vars['deps'] = [self.deps]
|
||||
if self.depfile is not None:
|
||||
ninja_vars['depfile'] = [self.depfile]
|
||||
ninja_vars['in'] = [infiles]
|
||||
ninja_vars['out'] = [outfiles]
|
||||
|
||||
# expand variables in command
|
||||
command = ' '.join([self._quoter(x) for x in self.command + self.args])
|
||||
|
|
Loading…
Reference in New Issue