From 275ef30fa0264d8e3be4fadba7c696d3802f1efe Mon Sep 17 00:00:00 2001 From: rahuel Date: Wed, 9 Mar 2005 08:13:10 +0000 Subject: [PATCH] Memory Leaks Traces Control of SwitchNodes --- src/GraphBase/DataFlowBase_StreamNode.cxx | 71 ++++++++++++++++++----- src/GraphBase/DataFlowBase_StreamNode.hxx | 23 +++++++- 2 files changed, 77 insertions(+), 17 deletions(-) diff --git a/src/GraphBase/DataFlowBase_StreamNode.cxx b/src/GraphBase/DataFlowBase_StreamNode.cxx index b3048d7..fb0a7a1 100644 --- a/src/GraphBase/DataFlowBase_StreamNode.cxx +++ b/src/GraphBase/DataFlowBase_StreamNode.cxx @@ -170,7 +170,8 @@ bool GraphBase::StreamNode::RemoveLinkedNode( GraphBase::StreamNode * ToNode , map< string , int >::iterator aMapOfLinkedNodesIterator ; int i = 0 ; for ( aMapOfLinkedNodesIterator = _MapOfLinkedNodes.begin() ; - aMapOfLinkedNodesIterator != _MapOfLinkedNodes.end() ; aMapOfLinkedNodesIterator++ ) { + aMapOfLinkedNodesIterator != _MapOfLinkedNodes.end() && i < _LinkedNodesSize ; + aMapOfLinkedNodesIterator++ ) { cdebug << "_MapOfLinkedNodes" << i++ << " of " << Name() << " : " << aMapOfLinkedNodesIterator->first << " --> " << aMapOfLinkedNodesIterator->second << endl ; @@ -180,7 +181,8 @@ bool GraphBase::StreamNode::RemoveLinkedNode( GraphBase::StreamNode * ToNode , map< string , int >::iterator aMapOfLinkedFromNodesIterator ; int ifrom = 0 ; for ( aMapOfLinkedFromNodesIterator = ToNode->_MapOfLinkedFromNodes.begin() ; - aMapOfLinkedFromNodesIterator != ToNode->_MapOfLinkedFromNodes.end() ; aMapOfLinkedFromNodesIterator++ ) { + aMapOfLinkedFromNodesIterator != ToNode->_MapOfLinkedFromNodes.end() && + ifrom < ToNode->_LinkedFromNodesSize ; aMapOfLinkedFromNodesIterator++ ) { cdebug << "_MapOfLinkedFromNodes" << ifrom++ << " of " << ToNode->Name() << " : " << aMapOfLinkedFromNodesIterator->first << " --> " << aMapOfLinkedFromNodesIterator->second << endl ; @@ -262,22 +264,36 @@ bool GraphBase::StreamNode::RemoveLinkedNode( GraphBase::StreamNode * ToNode , map< string , int >::iterator aMapOfLinkedNodesIterator1 ; int ii = 0 ; for ( aMapOfLinkedNodesIterator1 = _MapOfLinkedNodes.begin() ; - aMapOfLinkedNodesIterator1 != _MapOfLinkedNodes.end() ; aMapOfLinkedNodesIterator1++ ) { - cdebug << "_MapOfLinkedNodes" << ii++ << " of " << Name() << " : " - << aMapOfLinkedNodesIterator1->first << " --> " << aMapOfLinkedNodesIterator1->second - << " " << _LinkedNodes[ aMapOfLinkedNodesIterator1->second - 1 ]->Name() << endl ; + aMapOfLinkedNodesIterator1 != _MapOfLinkedNodes.end() && ii < _LinkedNodesSize ; + aMapOfLinkedNodesIterator1++ ) { + if ( aMapOfLinkedNodesIterator1->second ) { + cdebug << "_MapOfLinkedNodes" << ii++ << " of " << Name() << " : " + << aMapOfLinkedNodesIterator1->first << " --> " << aMapOfLinkedNodesIterator1->second + << " " << _LinkedNodes[ aMapOfLinkedNodesIterator1->second - 1 ]->Name() << endl ; + } + else { + cdebug << "_MapOfLinkedNodes" << ii << " of " << Name() << " : " + << aMapOfLinkedNodesIterator1->second - 1 << endl ; + } } #endif #if 1 map< string , int >::iterator aMapOfLinkedFromNodesIterator1 ; int iifrom = 0 ; for ( aMapOfLinkedFromNodesIterator1 = ToNode->_MapOfLinkedFromNodes.begin() ; - aMapOfLinkedFromNodesIterator1 != ToNode->_MapOfLinkedFromNodes.end() ; aMapOfLinkedFromNodesIterator1++ ) { - cdebug << "_MapOfLinkedFromNodes" << iifrom++ << " of " << ToNode->Name() << " : " - << aMapOfLinkedFromNodesIterator1->first << " --> " - << aMapOfLinkedFromNodesIterator1->second << " " - << ToNode->_LinkedFromNodes[ aMapOfLinkedFromNodesIterator1->second - 1 ]->Name() - << endl ; + aMapOfLinkedFromNodesIterator1 != ToNode->_MapOfLinkedFromNodes.end() && + iifrom < ToNode->_LinkedFromNodesSize ; aMapOfLinkedFromNodesIterator1++ ) { + if ( aMapOfLinkedFromNodesIterator1->second ) { + cdebug << "_MapOfLinkedFromNodes" << iifrom++ << " of " << ToNode->Name() << " : " + << aMapOfLinkedFromNodesIterator1->first << " --> " + << aMapOfLinkedFromNodesIterator1->second << " " + << ToNode->_LinkedFromNodes[ aMapOfLinkedFromNodesIterator1->second - 1 ]->Name() + << endl ; + } + else { + cdebug << "_MapOfLinkedFromNodes" << iifrom << " of " << ToNode->Name() << " : " + << aMapOfLinkedFromNodesIterator1->second - 1 << endl ; + } } #endif cdebug_out << "StreamNode::RemoveLinkedNode between " << Name() << " and " << ToNode->Name() @@ -288,7 +304,7 @@ bool GraphBase::StreamNode::RemoveLinkedNode( GraphBase::StreamNode * ToNode , void GraphBase::StreamNode::ReNameLinkedNode( const char* OldNodeName , const char* NewNodeName ) { cdebug_in << Name() << "->GraphBase::StreamNode::ReNameLinkedNode (" << OldNodeName << " , " - << NewNodeName << ")" << endl; + << NewNodeName << ") _LinkedNodesSize " << _LinkedNodesSize << endl; int index = GetLinkedNodeIndex( OldNodeName ) ; if ( index >= 0 ) { // _MapOfLinkedNodes.erase( OldNodeName ) ; @@ -299,13 +315,25 @@ void GraphBase::StreamNode::ReNameLinkedNode( const char* OldNodeName , cdebug << "GraphBase::StreamNode::ReNameLinkedNode ERROR " << OldNodeName << " not found in " << Name() << endl ; } +#if 1 + map< string , int >::iterator aMapOfLinkedNodesIterator1 ; + int ii = 0 ; + for ( aMapOfLinkedNodesIterator1 = _MapOfLinkedNodes.begin() ; + aMapOfLinkedNodesIterator1 != _MapOfLinkedNodes.end() && ii < _LinkedNodesSize ; + aMapOfLinkedNodesIterator1++ ) { + cdebug << "_MapOfLinkedNodes" << ii++ << " of " << Name() << " : " + << aMapOfLinkedNodesIterator1->first << " --> " << aMapOfLinkedNodesIterator1->second + << " " << _LinkedNodes[ aMapOfLinkedNodesIterator1->second - 1 ]->Name() << endl ; + } +#endif cdebug_out << Name() << "->GraphBase::StreamNode::ReNameLinkedNode" << endl ; } void GraphBase::StreamNode::ReNameLinkedFromNode( const char* OldNodeName , const char* NewNodeName ) { - cdebug_in << Name() << "->GraphBase::StreamNode::ReNameLinkedFromNode (" << OldNodeName << " , " - << NewNodeName << ")" << endl; + cdebug_in << Name() << "->GraphBase::StreamNode::ReNameLinkedFromNode (" << OldNodeName + << " , " << NewNodeName << ") _LinkedFromNodesSize " << _LinkedFromNodesSize + << endl; int index = GetLinkedFromNodeIndex( OldNodeName ) ; if ( index >= 0 ) { // _MapOfLinkedFromNodes.erase( OldNodeName ) ; @@ -316,6 +344,19 @@ void GraphBase::StreamNode::ReNameLinkedFromNode( const char* OldNodeName , cdebug << Name() << "->GraphBase::StreamNode::ReNameLinkedFromNode ERROR " << OldNodeName << " not found in " << Name() << endl ; } +#if 1 + map< string , int >::iterator aMapOfLinkedFromNodesIterator1 ; + int iifrom = 0 ; + for ( aMapOfLinkedFromNodesIterator1 = _MapOfLinkedFromNodes.begin() ; + aMapOfLinkedFromNodesIterator1 != _MapOfLinkedFromNodes.end() && + iifrom < _LinkedFromNodesSize ; aMapOfLinkedFromNodesIterator1++ ) { + cdebug << "_MapOfLinkedFromNodes" << iifrom++ << " of " << Name() << " : " + << aMapOfLinkedFromNodesIterator1->first << " --> " + << aMapOfLinkedFromNodesIterator1->second << " " + << _LinkedFromNodes[ aMapOfLinkedFromNodesIterator1->second - 1 ]->Name() + << endl ; + } +#endif cdebug_out << Name() << "->GraphBase::StreamNode::ReNameLinkedFromNode" << endl ; } diff --git a/src/GraphBase/DataFlowBase_StreamNode.hxx b/src/GraphBase/DataFlowBase_StreamNode.hxx index 122d152..63398c7 100644 --- a/src/GraphBase/DataFlowBase_StreamNode.hxx +++ b/src/GraphBase/DataFlowBase_StreamNode.hxx @@ -51,6 +51,8 @@ namespace GraphBase { vector _LinkedStreamNodes ; vector _LinkedInStreamPortsNumber ; + bool _NodeDoneInBranchOfSwitch ; + bool _HeadNode ; int _LevelNumber ; int _SortedIndex ; @@ -84,8 +86,15 @@ namespace GraphBase { public: - char * Name() const { return my_strdup( _Name ) ; } ; - const char *const * NamePtr() const { return &_Name ; } ; +//JR 17.02.2005 Memory Leak char * Name() const { return my_strdup( _Name ) ; } ; + char * Name() const { +// cdebug << "StreamNode::Name " << (void * ) _Name << " = " << _Name << endl ; +//JR 21.02.2005 Memory Leak return my_strdup( _Name ) ; } ; + return _Name ; } ; + const char *const * NamePtr() const { +// cdebug << "StreamNode::NamePtr " << (void ** ) &_Name << " = Name " << (void * ) _Name +// << " = " << _Name << endl ; + return &_Name ; } ; bool Name( const char * aName ) ; SUPERV::KindOfNode Kind() const { @@ -207,6 +216,16 @@ namespace GraphBase { StreamNode * LinkedStreamNodes( int i ) const { return _LinkedStreamNodes[ i ] ; } ; + bool BranchOfSwitchDone( bool aNodeDoneInBranchOfSwitch ) { + bool prevalue = _NodeDoneInBranchOfSwitch ; + _NodeDoneInBranchOfSwitch = aNodeDoneInBranchOfSwitch ; + if ( prevalue && !aNodeDoneInBranchOfSwitch ) { + return false ; + } + return true ; } ; + bool BranchOfSwitchDone() { + return _NodeDoneInBranchOfSwitch ; } ; + void HeadNode( bool aHeadNode ) { _HeadNode = aHeadNode ; } ; const bool IsHeadNode() const { return _HeadNode ; } ; -- 2.39.2