From f0e0c9ce34310070f7a7547d9262deef59751407 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 19 Jul 2022 08:25:35 +0200 Subject: Fix bug in target::matched() --- libbuild2/cc/common.cxx | 7 +------ libbuild2/target.ixx | 7 ++++++- 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 { -- cgit v1.1