From 2013056a2c83efbbe83e61994d019c8317a9284f 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.
---
 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 21624ba4..9e17b4c0 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -5616,7 +5616,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 3b8a78e3..639108e2 100644
--- a/src/StaticModel.cc
+++ b/src/StaticModel.cc
@@ -2061,7 +2061,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