mirror of
https://github.com/mirror/make.git
synced 2025-01-07 10:50:54 +08:00
4762480ae9
The fix for SV 44742 had a side-effect that some double-colon targets were skipped. This happens because the "considered" facility assumed that all targets would be visited on each walk through the dependency graph: we used a bit for considered and toggled it on each pass; if we didn't walk the entire graph on every pass the bit would get out of sync. The new behavior after SV 44742 might return early without walking the entire graph. To fix this I changed the considered value to an integer which is monotonically increasing: it is then never possible to incorrectly determine that a previous pass through the graph already considered the current target. * filedef.h (struct file): make CONSIDERED an unsigned int. * main.c (main): No longer need to reset CONSIDERED. * remake.c (update_goal_chain): increment CONSIDERED rather than inverting it between 0<->1. (update_file_1): Reset CONSIDERED to 0 so it's re-considered. (check_dep): Ditto. * tests/scripts/features/double_colon: Add a regression test. |
||
---|---|---|
.. | ||
features | ||
functions | ||
misc | ||
options | ||
targets | ||
variables | ||
vms | ||
test_template |