fix bug in promise handling code...
[model-checker.git] / nodestack.cc
index d4c97652b3c08084d3b08be614638dd054f54913..ec72def002838b97429d3a27a99e0fd3825aecc0 100644 (file)
@@ -41,13 +41,13 @@ Node::Node(ModelAction *act, Node *par, int nthreads, Node *prevfairness)
        ASSERT(act);
        act->set_node(this);
        int currtid = id_to_int(act->get_tid());
-       int prevtid = (prevfairness != NULL) ? id_to_int(prevfairness->action->get_tid()) : 0;
+       int prevtid = prevfairness ? id_to_int(prevfairness->action->get_tid()) : 0;
 
        if (model->params.fairwindow != 0) {
-               for (int i = 0; i < nthreads; i++) {
+               for (int i = 0; i < num_threads; i++) {
                        ASSERT(i < ((int)fairness.size()));
                        struct fairness_info *fi = &fairness[i];
-                       struct fairness_info *prevfi = (par != NULL) && (i < par->get_num_threads()) ? &par->fairness[i] : NULL;
+                       struct fairness_info *prevfi = (parent && i < parent->get_num_threads()) ? &parent->fairness[i] : NULL;
                        if (prevfi) {
                                *fi = *prevfi;
                        }
@@ -89,7 +89,11 @@ Node::~Node()
 void Node::print()
 {
        action->print();
-       model_print("          backtrack: %s\n", backtrack_empty() ? "empty" : "non-empty");
+       model_print("          backtrack: %s", backtrack_empty() ? "empty" : "non-empty");
+       for (int i = 0; i < (int)backtrack.size(); i++)
+               if (backtrack[i] == true)
+                       model_print("[%d]", i);
+       model_print("\n");
        model_print("          future values: %s\n", future_value_empty() ? "empty" : "non-empty");
        model_print("          read-from: %s\n", read_from_empty() ? "empty" : "non-empty");
        model_print("          promises: %s\n", promise_empty() ? "empty" : "non-empty");