aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/Graph.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/armnn/Graph.cpp')
-rw-r--r--src/armnn/Graph.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/armnn/Graph.cpp b/src/armnn/Graph.cpp
index b5769f75f3..e5d123830c 100644
--- a/src/armnn/Graph.cpp
+++ b/src/armnn/Graph.cpp
@@ -497,13 +497,19 @@ void Graph::ReplaceSubgraphConnections(const SubgraphView& subgraph, const Subgr
IInputSlot* subgraphInputSlot = subgraphInputSlots.at(inputSlotIdx);
ARMNN_ASSERT(subgraphInputSlot);
- IOutputSlot* connectedOutputSlot = subgraphInputSlot->GetConnection();
- ARMNN_ASSERT(connectedOutputSlot);
- connectedOutputSlot->Disconnect(*subgraphInputSlot);
+ // Only disconnect if the InputSlot has a connection, this might not be the case when
+ // dealing with working copies of SubgraphViews
+ // Note: we don't need this check for OutputSlot as it iterates over a vector of valid connections
+ if (subgraphInputSlot->GetConnection())
+ {
+ IOutputSlot* connectedOutputSlot = subgraphInputSlot->GetConnection();
+ ARMNN_ASSERT(connectedOutputSlot);
+ connectedOutputSlot->Disconnect(*subgraphInputSlot);
- IInputSlot* substituteInputSlot = substituteSubgraphInputSlots.at(inputSlotIdx);
- ARMNN_ASSERT(substituteInputSlot);
- connectedOutputSlot->Connect(*substituteInputSlot);
+ IInputSlot* substituteInputSlot = substituteSubgraphInputSlots.at(inputSlotIdx);
+ ARMNN_ASSERT(substituteInputSlot);
+ connectedOutputSlot->Connect(*substituteInputSlot);
+ }
}
// Step 2: process output slots