model: bugfix - iterator naming conflict
[model-checker.git] / model.cc
index 1e081204af163b68e321052f58387b6911c69dba..fdefcc2bcf390dd4a2615a411920466a8f901022 100644 (file)
--- a/model.cc
+++ b/model.cc
@@ -613,6 +613,7 @@ Thread * ModelChecker::check_current_action(ModelAction *curr)
                build_reads_from_past(curr);
        curr = newcurr;
 
+       /* Initialize work_queue with the "current action" work */
        work_queue_t work_queue(1, CheckCurrWorkEntry(curr));
 
        while (!work_queue.empty()) {
@@ -625,7 +626,8 @@ Thread * ModelChecker::check_current_action(ModelAction *curr)
                        bool update = false; /* update this location's release seq's */
                        bool update_all = false; /* update all release seq's */
 
-                       process_thread_action(curr);
+                       if (process_thread_action(curr))
+                               update_all = true;
 
                        if (act->is_read() && process_read(act, second_part_of_rmw))
                                update = true;
@@ -1277,9 +1279,9 @@ bool ModelChecker::resolve_release_sequences(void *location, work_queue_t *work_
                        work_queue->push_back(MOEdgeWorkEntry(act));
 
                        /* propagate synchronization to later actions */
-                       action_list_t::reverse_iterator it = action_trace->rbegin();
-                       for (; (*it) != act; it++) {
-                               ModelAction *propagate = *it;
+                       action_list_t::reverse_iterator rit = action_trace->rbegin();
+                       for (; (*rit) != act; rit++) {
+                               ModelAction *propagate = *rit;
                                if (act->happens_before(propagate)) {
                                        propagate->synchronize_with(act);
                                        /* Re-check 'propagate' for mo_graph edges */