From 944476b942061ce790c641503707cb01443628c0 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Wed, 4 Oct 2017 22:26:21 +0200 Subject: [PATCH] Remove side effects from right hand operands of && or ||. --- .../CommunicationDeterminismChecker.cpp | 17 +++++++--- src/mc/checker/LivenessChecker.cpp | 33 ++++++++++--------- src/xbt/xbt_os_file.c | 6 ++-- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/mc/checker/CommunicationDeterminismChecker.cpp b/src/mc/checker/CommunicationDeterminismChecker.cpp index 5f7b401d4b..c4dd392077 100644 --- a/src/mc/checker/CommunicationDeterminismChecker.cpp +++ b/src/mc/checker/CommunicationDeterminismChecker.cpp @@ -441,8 +441,12 @@ void CommunicationDeterminismChecker::main() /* Update statistics */ mc_model_checker->visited_states++; - if (stack_.size() <= (std::size_t)_sg_mc_max_depth && (req = MC_state_get_request(state)) != nullptr && - (visited_state == nullptr)) { + if (stack_.size() <= (std::size_t)_sg_mc_max_depth) + req = MC_state_get_request(state); + else + req = nullptr; + + if (req != nullptr && visited_state == nullptr) { int req_num = state->transition.argument; @@ -480,9 +484,12 @@ void CommunicationDeterminismChecker::main() * with the initial pattern. */ bool compare_snapshots = all_communications_are_finished() && this->initial_communications_pattern_done; - if (_sg_mc_max_visited_states == 0 || - (visited_state = visitedStates_.addVisitedState(expandedStatesCount_, next_state.get(), compare_snapshots)) == - nullptr) { + if (_sg_mc_max_visited_states != 0) + visited_state = visitedStates_.addVisitedState(expandedStatesCount_, next_state.get(), compare_snapshots); + else + visited_state = nullptr; + + if (visited_state == nullptr) { /* Get enabled actors and insert them in the interleave set of the next state */ for (auto& actor : mc_model_checker->process().actors()) diff --git a/src/mc/checker/LivenessChecker.cpp b/src/mc/checker/LivenessChecker.cpp index 26cba12c0d..df9cd0301b 100644 --- a/src/mc/checker/LivenessChecker.cpp +++ b/src/mc/checker/LivenessChecker.cpp @@ -383,26 +383,29 @@ void LivenessChecker::run() } std::shared_ptr reached_pair; - if (current_pair->automaton_state->type == 1 && not current_pair->exploration_started && - (reached_pair = this->insertAcceptancePair(current_pair.get())) == nullptr) { - this->showAcceptanceCycle(current_pair->depth); - throw simgrid::mc::LivenessError(); + if (current_pair->automaton_state->type == 1 && not current_pair->exploration_started) { + reached_pair = this->insertAcceptancePair(current_pair.get()); + if (reached_pair == nullptr) { + this->showAcceptanceCycle(current_pair->depth); + throw simgrid::mc::LivenessError(); + } } /* Pair already visited ? stop the exploration on the current path */ int visited_num = -1; - if ((not current_pair->exploration_started) && - (visited_num = this->insertVisitedPair(reached_pair, current_pair.get())) != -1) { - if (dot_output != nullptr){ - fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n", - this->previousPair_, visited_num, - this->previousRequest_.c_str()); - fflush(dot_output); + if (not current_pair->exploration_started) { + visited_num = this->insertVisitedPair(reached_pair, current_pair.get()); + if (visited_num != -1) { + if (dot_output != nullptr) { + fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n", this->previousPair_, visited_num, + this->previousRequest_.c_str()); + fflush(dot_output); + } + XBT_DEBUG("Pair already visited (equal to pair %d), exploration on the current path stopped.", visited_num); + current_pair->requests = 0; + this->backtrack(); + continue; } - XBT_DEBUG("Pair already visited (equal to pair %d), exploration on the current path stopped.", visited_num); - current_pair->requests = 0; - this->backtrack(); - continue; } smx_simcall_t req = MC_state_get_request(current_pair->graph_state.get()); diff --git a/src/xbt/xbt_os_file.c b/src/xbt/xbt_os_file.c index 789c14118e..692b7c3ab6 100644 --- a/src/xbt/xbt_os_file.c +++ b/src/xbt/xbt_os_file.c @@ -1,6 +1,6 @@ /* xbt_os_file.c -- portable interface to file-related functions */ -/* Copyright (c) 2007-2010, 2012-2015. The SimGrid Team. +/* Copyright (c) 2007-2010, 2012-2017. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -53,7 +53,9 @@ ssize_t xbt_getline(char **buf, size_t *n, FILE *stream) } (*buf)[i] = ch; i++; - } while (ch != '\n' && (ch = getc(stream)) != EOF); + if (ch == '\n') + break; + } while ((ch = getc(stream)) != EOF); if (i == *n) { *n += 1; -- 2.20.1