Forráskód Böngészése

Merge remote-tracking branch 'origin/candidate-3.10.8' into candidate-3.10.x

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 12 éve
szülő
commit
2281d2191a
1 módosított fájl, 7 hozzáadás és 6 törlés
  1. 7 6
      thorlcr/graph/thgraphslave.cpp

+ 7 - 6
thorlcr/graph/thgraphslave.cpp

@@ -113,17 +113,18 @@ CSlaveActivity::~CSlaveActivity()
 void CSlaveActivity::setInput(unsigned index, CActivityBase *inputActivity, unsigned inputOutIdx)
 {
     CActivityBase::setInput(index, inputActivity, inputOutIdx);
-    Owned<CActivityBase> nullAct;
+    Linked<IThorDataLink> outLink;
     if (!inputActivity)
     {
-        nullAct.setown(container.factory(TAKnull));
-        inputActivity = nullAct; // NB: output of nullAct linked, input of this act will own
+        Owned<CActivityBase> nullAct = container.factory(TAKnull);
+        outLink.set(((CSlaveActivity *)(nullAct.get()))->queryOutput(0)); // NB inputOutIdx irrelevant, null has single 'fake' output
+        nullAct->releaseIOs(); // normally done as graph winds up, clear now to avoid circular dependencies with outputs
     }
-
-    IThorDataLink *outLink = ((CSlaveActivity *)inputActivity)->queryOutput(inputOutIdx);
+    else
+        outLink.set(((CSlaveActivity *)inputActivity)->queryOutput(inputOutIdx));
     assertex(outLink);
     while (inputs.ordinality()<=index) inputs.append(NULL);
-    inputs.replace(LINK(outLink), index);
+    inputs.replace(outLink.getClear(), index);
 }
 
 IThorDataLink *CSlaveActivity::queryOutput(unsigned index)