|
From: <ma...@us...> - 2010-08-22 11:57:42
|
Revision: 849
http://scstudio.svn.sourceforge.net/scstudio/?rev=849&view=rev
Author: madzin
Date: 2010-08-22 11:57:36 +0000 (Sun, 22 Aug 2010)
Log Message:
-----------
repair bug ID: 2963655
Modified Paths:
--------------
trunk/src/data/Z120/Context.cpp
trunk/src/data/msc.cpp
trunk/tests/z120_test/z120_test69.mpr.result
trunk/tests/z120_test/z120_test86.mpr.result
Modified: trunk/src/data/Z120/Context.cpp
===================================================================
--- trunk/src/data/Z120/Context.cpp 2010-08-21 20:23:17 UTC (rev 848)
+++ trunk/src/data/Z120/Context.cpp 2010-08-22 11:57:36 UTC (rev 849)
@@ -278,6 +278,27 @@
}
if(!context->future_events.empty()){
+ std::map<std::string, EventPtr>::iterator future_it;
+ CoregEventRelPtrVector predecessors_rel;
+ CoregionEvent* predecessor;
+ CoregionEventPtr future_e;
+
+ for(future_it = context->future_events.begin(); future_it != context->future_events.end(); future_it++)
+ {
+ future_e = boost::dynamic_pointer_cast<CoregionEvent>(future_it->second);
+
+ if(future_e != NULL)
+ {
+ predecessors_rel = future_e->get_predecessors();
+
+ for(unsigned int i = 0; i < predecessors_rel.size(); i++)
+ {
+ predecessor = predecessors_rel[i]->get_predecessor();
+ predecessor->remove_successor(predecessors_rel[i]);
+ }
+ }
+ }
+ context->future_events.clear();
context->z->print_report(RS_WARNING, L"Warning 06: Dependency on nonexisting event\n");
}
Modified: trunk/src/data/msc.cpp
===================================================================
--- trunk/src/data/msc.cpp 2010-08-21 20:23:17 UTC (rev 848)
+++ trunk/src/data/msc.cpp 2010-08-22 11:57:36 UTC (rev 849)
@@ -338,10 +338,21 @@
void CoregionEvent::remove_successor(const CoregEventRelPtr& e)
{
+CoregEventRelPtrVector::iterator it;
+
+for(it = m_successors.begin(); it != m_successors.end(); it++)
+{
+ if(*it == e)
+ break;
+}
+m_successors.erase(it);
+
// m_successors.erase(e)
// note: vector does not support the erase() function
+/*
std::remove_if(m_successors.begin(), m_successors.end(),
- std::bind2nd(std::equal_to<CoregEventRelPtr>(), e));
+ std::bind2nd(std::equal_to<CoregEventRelPtr>(), e));
+*/
if(!has_successors())
get_coregion_area()->add_maximal_event(this);
Modified: trunk/tests/z120_test/z120_test69.mpr.result
===================================================================
--- trunk/tests/z120_test/z120_test69.mpr.result 2010-08-21 20:23:17 UTC (rev 848)
+++ trunk/tests/z120_test/z120_test69.mpr.result 2010-08-22 11:57:36 UTC (rev 849)
@@ -19,12 +19,10 @@
out SYNACK,1 to PC;
in ACK,2 from PC;
concurrent;
-in request_a,3 from PC before e0, e1;
+in request_a,3 from PC before e0;
in request_b,4 from PC;
label e0;
out result,5 to PC;
-label e1;
-;
endconcurrent;
endinstance;
endmsc;
Modified: trunk/tests/z120_test/z120_test86.mpr.result
===================================================================
--- trunk/tests/z120_test/z120_test86.mpr.result 2010-08-21 20:23:17 UTC (rev 848)
+++ trunk/tests/z120_test/z120_test86.mpr.result 2010-08-22 11:57:36 UTC (rev 849)
@@ -14,9 +14,7 @@
in a,0 from NAME2;
in a,1 from found before e0;
label e0;
-out b,2 to NAME2 before e1;
-label e1;
-;
+out b,2 to NAME2;
endconcurrent;
endinstance;
NAME2: instance;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|