aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2022-07-19 08:25:35 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2022-07-19 08:25:35 +0200
commitf0e0c9ce34310070f7a7547d9262deef59751407 (patch)
tree6534503e02b0fac9f88e7ea9ade195fe26afda36
parent1db478cb8a51cd0adc44b66e7ec10fd44261adf2 (diff)
Fix bug in target::matched()
-rw-r--r--libbuild2/cc/common.cxx7
-rw-r--r--libbuild2/target.ixx7
2 files changed, 7 insertions, 7 deletions
diff --git a/libbuild2/cc/common.cxx b/libbuild2/cc/common.cxx
index 3b49d58..3c4e38d 100644
--- a/libbuild2/cc/common.cxx
+++ b/libbuild2/cc/common.cxx
@@ -597,12 +597,7 @@ namespace build2
const char* w (nullptr);
if (t.ctx.phase == run_phase::match)
{
- size_t o (
- t.state[a].task_count.load (memory_order_consume) -
- t.ctx.count_base ());
-
- if (o != target::offset_applied &&
- o != target::offset_executed)
+ if (!t.matched (a))
w = "not matched";
}
else if (t.mtime () == timestamp_unknown)
diff --git a/libbuild2/target.ixx b/libbuild2/target.ixx
index 5432f7c..899e829 100644
--- a/libbuild2/target.ixx
+++ b/libbuild2/target.ixx
@@ -245,7 +245,12 @@ namespace build2
if (ctx.phase == run_phase::match)
{
- return c == offset_applied;
+ // While it will normally be applied, it could also be already executed.
+ //
+ // Note that we can't do >= offset_applied since offset_busy means it is
+ // being matched.
+ //
+ return c == offset_applied || c == offset_executed;
}
else
{