diff options
Diffstat (limited to 'src/systemc/core/event.cc')
-rw-r--r-- | src/systemc/core/event.cc | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/systemc/core/event.cc b/src/systemc/core/event.cc index 61fa80c8b..0daca12e1 100644 --- a/src/systemc/core/event.cc +++ b/src/systemc/core/event.cc @@ -145,9 +145,18 @@ Event::notify() if (delayedNotify.scheduled()) scheduler.deschedule(&delayedNotify); - auto local_sensitivities = sensitivities; - for (auto s: local_sensitivities) + for (auto s: staticSensitivities) s->notify(this); + DynamicSensitivities &ds = dynamicSensitivities; + int size = ds.size(); + int pos = 0; + while (pos < size) { + if (ds[pos]->notify(this)) + ds[pos] = ds[--size]; + else + pos++; + } + ds.resize(size); } void |