From e025887e369a8d6a432757db4e54d18222b1972d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Tue, 12 Jul 2022 15:24:20 +0200
Subject: [PATCH] Fix bug in JSON output for derivatives w.r.t. parameters

Confusion between a symbol ID and a derivation ID, which could lead to invalid
output or crash.

(cherry picked from commit 2013056a2c83efbbe83e61994d019c8317a9284f)
---
 src/DynamicModel.cc | 2 +-
 src/StaticModel.cc  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index 77826c2a..1d39cc42 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -6581,7 +6581,7 @@ DynamicModel::writeJsonParamsDerivativesFile(ostream &output, bool writeDetails)
                  << R"(, "param2_col": )" << param2_col + 1;
 
       if (writeDetails)
-        gpp_output << R"(, "var": ")" << symbol_table.getName(var) << R"(")"
+        gpp_output << R"(, "var": ")" << symbol_table.getName(getSymbIDByDerivID(var)) << R"(")"
                    << R"(, "lag": )" << getLagByDerivID(var)
                    << R"(, "param1": ")" << symbol_table.getName(getSymbIDByDerivID(param1)) << R"(")"
                    << R"(, "param2": ")" << symbol_table.getName(getSymbIDByDerivID(param2)) << R"(")";
diff --git a/src/StaticModel.cc b/src/StaticModel.cc
index 964ed5b7..ffea4fb8 100644
--- a/src/StaticModel.cc
+++ b/src/StaticModel.cc
@@ -2730,7 +2730,7 @@ StaticModel::writeJsonParamsDerivativesFile(ostream &output, bool writeDetails)
                           << R"(, "param2_col": )" << param2_col;
 
       if (writeDetails)
-        third_derivs_output << R"(, "var": ")" << symbol_table.getName(var) << R"(")"
+        third_derivs_output << R"(, "var": ")" << symbol_table.getName(getSymbIDByDerivID(var)) << R"(")"
                             << R"(, "param1": ")" << symbol_table.getName(getSymbIDByDerivID(param1)) << R"(")"
                             << R"(, "param2": ")" << symbol_table.getName(getSymbIDByDerivID(param2)) << R"(")";
 
-- 
GitLab