From 45cd8e6853c6fa661ada8dd03e79b4e859d58bbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Mon, 30 Jul 2018 12:53:23 +0200 Subject: [PATCH] Fix regression in nested diffs introduced in 90d8b579 See McModelTeam/McModelProject/issues/97. --- src/DynamicModel.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc index 43544888..b44bc6ba 100644 --- a/src/DynamicModel.cc +++ b/src/DynamicModel.cc @@ -5391,7 +5391,10 @@ DynamicModel::substituteDiff(StaticModel &static_model, ExprNode::subst_table_t auto iterator_arg_max_lag = it.second.rbegin(); int arg_max_lag = iterator_arg_max_lag->first; expr_t arg_max_expr = iterator_arg_max_lag->second; - while (arg_max_lag < 0) + + /* We compare arg_max_lag with the result of countDiffs(), in order to + properly handle nested diffs. See McModelTeam/McModelProject/issues/97 */ + while (arg_max_lag < 1 - it.first->countDiffs()) { arg_max_lag++; arg_max_expr = arg_max_expr->decreaseLeadsLags(-1);