From aa5e8f54d647fc061926e7b922de867b90cdf8c3 Mon Sep 17 00:00:00 2001 From: mkr Date: Fri, 12 Jan 2007 14:38:47 +0000 Subject: [PATCH] Fix for bug PAL12575 : Superv: GNode - unexpected abort. --- .../DataFlowExecutor_InNodeThreads.cxx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/GraphExecutor/DataFlowExecutor_InNodeThreads.cxx b/src/GraphExecutor/DataFlowExecutor_InNodeThreads.cxx index b56f5e5..9ae6293 100644 --- a/src/GraphExecutor/DataFlowExecutor_InNodeThreads.cxx +++ b/src/GraphExecutor/DataFlowExecutor_InNodeThreads.cxx @@ -2543,6 +2543,7 @@ int GraphExecutor::InNode::Successed_SuccessAction() { << " Successed_SuccessAction # number of ports " << GetNodeOutPortsSize() << " != " << aLabelNode-> GetNodeInPortsSize() << endl ; SendEvent( GraphExecutor::ErrorEvent ) ; + aLabelNode->State( GraphExecutor::ErroredState ) ; // PAL12575 return 0 ; } else { @@ -2573,6 +2574,7 @@ int GraphExecutor::InNode::Successed_SuccessAction() { << " Successed_SuccessAction # names of ports " << aBusParamOutPort->PortName() << endl ; SendEvent( GraphExecutor::ErrorEvent ) ; + aLabelNode->State( GraphExecutor::ErroredState ) ; // PAL12575 return 0 ; } } @@ -2650,6 +2652,23 @@ int GraphExecutor::InNode::Successed_SuccessAction() { } } +// PAL12575 --> + if ( IsInLineNode() && !IsEndSwitchNode() ) { + GraphBase::InPort *toInGatePort = GetChangeNodeInGate() ; + GraphBase::OutPort *fromOutPort = toInGatePort->GetOutPort() ; + if ( fromOutPort && fromOutPort->IsGate() ) { + GraphExecutor::InNode * fromNode = (GraphExecutor::InNode *) _OutNode->Graph()->GetChangeGraphNode( fromOutPort->NodeName() )->GetInNode() ; + if ( fromNode && fromNode->IsGOTONode() && fromOutPort->PortState() != SUPERV::ReadyState ) { + cdebug << pthread_self() << "/" << ThreadNo() + << " Successed_SuccessAction # problem with connection of GoTo node with its coupled node!" << endl ; + State( GraphExecutor::ErroredState ) ; + SendEvent( GraphExecutor::ErrorEvent ) ; + return 0 ; + } + } + } +// PAL12575 <-- + //Loop of LinkedNodes for SendSomeDataReady : for ( i = 0 ; i < LinkedNodesSize() ; i++ ) { GraphBase::ComputingNode * aComputingNode ; -- 2.39.2