summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/buildgraph/projectbuilddata.cpp5
-rw-r--r--src/lib/buildgraph/rulesapplicator.cpp2
2 files changed, 6 insertions, 1 deletions
diff --git a/src/lib/buildgraph/projectbuilddata.cpp b/src/lib/buildgraph/projectbuilddata.cpp
index 1ad45c13a..bec6585bc 100644
--- a/src/lib/buildgraph/projectbuilddata.cpp
+++ b/src/lib/buildgraph/projectbuilddata.cpp
@@ -183,7 +183,10 @@ void ProjectBuildData::updateNodeThatMustGetNewTransformer(Artifact *artifact, c
const RuleConstPtr rule = artifact->transformer->rule;
isDirty = true;
- artifact->transformer = TransformerPtr();
+
+ QBS_CHECK(artifact->transformer);
+ foreach (Artifact * const sibling, artifact->transformer->outputs)
+ sibling->transformer.clear();
ArtifactsPerFileTagMap artifactsPerFileTag;
foreach (Artifact *input, artifact->children) {
diff --git a/src/lib/buildgraph/rulesapplicator.cpp b/src/lib/buildgraph/rulesapplicator.cpp
index 70de2bc17..0e3e95374 100644
--- a/src/lib/buildgraph/rulesapplicator.cpp
+++ b/src/lib/buildgraph/rulesapplicator.cpp
@@ -240,6 +240,8 @@ Artifact *RulesApplicator::createOutputArtifact(const RuleArtifactConstPtr &rule
Artifact *outputArtifact = lookupArtifact(m_product, outputPath);
if (outputArtifact) {
if (outputArtifact->transformer && outputArtifact->transformer != m_transformer) {
+ QBS_CHECK(!m_transformer);
+
// This can happen when applying rules after scanning for additional file tags.
// We just regenerate the transformer.
if (m_logger.traceEnabled()) {