From 6006579de8814eb1f2bb33aa065ef2badd5a48ba Mon Sep 17 00:00:00 2001
From: Houtan Bastani <houtan.bastani@ens.fr>
Date: Tue, 3 Apr 2012 12:59:56 +0200
Subject: [PATCH] bug fix: output not correct for corr(a,b).prior statement

---
 ComputingTasks.cc | 10 +++++-----
 ComputingTasks.hh |  2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/ComputingTasks.cc b/ComputingTasks.cc
index 835a1596..d80e4d55 100644
--- a/ComputingTasks.cc
+++ b/ComputingTasks.cc
@@ -1864,13 +1864,13 @@ BasicPriorStatement::writeCommonOutputHelper(ostream &output, const string &fiel
 }
 
 void
-BasicPriorStatement::writePriorOutput(ostream &output, string &lhs_field) const
+BasicPriorStatement::writePriorOutput(ostream &output, string &lhs_field, const string &name2) const
 {
   if (subsample_name.empty())
     lhs_field += ".prior(1)";
   else
     {
-      output << "subsamples_indx = get_existing_subsamples_indx('" << name << "','');" << endl
+      output << "subsamples_indx = get_existing_subsamples_indx('" << name << "','" << name2 << "');" << endl
              << "eisind = get_subsamples_range_indx(subsamples_indx, '" << subsample_name << "');" << endl;
       lhs_field += ".subsample_prior(eisind)";
     }
@@ -1893,7 +1893,7 @@ PriorStatement::writeOutput(ostream &output, const string &basename) const
   output << "eifind = get_new_or_existing_ei_index('parameter_prior_index', '"
          << name << "', '');" << endl
          << "estimation_info.parameter_prior_index(eifind) = {'" << name << "'};" << endl;
-  writePriorOutput(output, lhs_field);
+  writePriorOutput(output, lhs_field, "");
 }
 
 StdPriorStatement::StdPriorStatement(const string &name_arg,
@@ -1917,7 +1917,7 @@ StdPriorStatement::writeOutput(ostream &output, const string &basename) const
          << "estimation_info." << lhs_field << "_prior_index(eifind) = {'" << name << "'};" << endl;
 
   lhs_field = "estimation_info." + lhs_field + "(eifind)";
-  writePriorOutput(output, lhs_field);
+  writePriorOutput(output, lhs_field, "");
 }
 
 CorrPriorStatement::CorrPriorStatement(const string &name_arg1, const string &name_arg2,
@@ -1957,7 +1957,7 @@ CorrPriorStatement::writeOutput(ostream &output, const string &basename) const
          << name << ":" << name1 << "'};" << endl;
 
   lhs_field = "estimation_info." + lhs_field + "_corr(eifind)";
-  writePriorOutput(output, lhs_field);
+  writePriorOutput(output, lhs_field, name1);
 }
 
 PriorEqualStatement::PriorEqualStatement(const string &to_declaration_type_arg,
diff --git a/ComputingTasks.hh b/ComputingTasks.hh
index 3d7f5ad9..802392b5 100644
--- a/ComputingTasks.hh
+++ b/ComputingTasks.hh
@@ -634,7 +634,7 @@ protected:
   void get_base_name(const SymbolType symb_type, string &lhs_field) const;
   void writeCommonOutput(ostream &output, const string &lhs_field) const;
   void writeCommonOutputHelper(ostream &output, const string &field, const string &lhs_field) const;
-  void writePriorOutput(ostream &output, string &lhs_field) const;
+  void writePriorOutput(ostream &output, string &lhs_field, const string &name2) const;
 };
 
 class PriorStatement : public BasicPriorStatement
-- 
GitLab