Fix bugs with integer-valued variables when parsing Makefiles. Values

for done[n] can be integers as well as strings, but the code
concatenates them with strings (fixed by adding a str()) and calls
string.strip() on them (fixed by rearranging the logic)

(Presumably this wasn't noticed previously because parse_makefile()
was only called on Modules/Makefile, which contains no integer-valued
variables.)
This commit is contained in:
Andrew M. Kuchling 2001-01-16 16:33:28 +00:00
parent 9710297e36
commit b11bd03626
1 changed files with 9 additions and 5 deletions

View File

@ -204,13 +204,15 @@ def parse_makefile(fn, g=None):
n = m.group(1) n = m.group(1)
if done.has_key(n): if done.has_key(n):
after = value[m.end():] after = value[m.end():]
value = value[:m.start()] + done[n] + after value = value[:m.start()] + str(done[n]) + after
if "$" in after: if "$" in after:
notdone[name] = value notdone[name] = value
else: else:
try: value = string.atoi(value) try: value = string.atoi(value)
except ValueError: pass except ValueError:
done[name] = string.strip(value) done[name] = string.strip(value)
else:
done[name] = value
del notdone[name] del notdone[name]
elif notdone.has_key(n): elif notdone.has_key(n):
# get it on a subsequent round # get it on a subsequent round
@ -223,8 +225,10 @@ def parse_makefile(fn, g=None):
notdone[name] = value notdone[name] = value
else: else:
try: value = string.atoi(value) try: value = string.atoi(value)
except ValueError: pass except ValueError:
done[name] = string.strip(value) done[name] = string.strip(value)
else:
done[name] = value
del notdone[name] del notdone[name]
else: else:
# bogus variable reference; just drop it since we can't deal # bogus variable reference; just drop it since we can't deal