From 86c3c0fb1b9afc7e6dbda4a47f7029f9446afddf Mon Sep 17 00:00:00 2001
From: ferhat <ferhat.mihoubi@univ-evry.fr>
Date: Tue, 6 Jan 2015 10:30:52 +0100
Subject: [PATCH] Checks that fields endo_names, exo_names and param_names
 exist

---
 mex/sources/bytecode/ErrorHandling.hh | 45 +++++++++++++++++++++------
 1 file changed, 36 insertions(+), 9 deletions(-)

diff --git a/mex/sources/bytecode/ErrorHandling.hh b/mex/sources/bytecode/ErrorHandling.hh
index 6e2024a378..f6bf2f8ab0 100644
--- a/mex/sources/bytecode/ErrorHandling.hh
+++ b/mex/sources/bytecode/ErrorHandling.hh
@@ -307,15 +307,42 @@ public:
   ErrorMsg()
   {
     mxArray *M_ = mexGetVariable("global", "M_");
-    nb_endo = mxGetM(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "endo_names")));
-    endo_name_length = mxGetN(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "endo_names")));
-    P_endo_names = (char *) mxGetPr(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "endo_names")));
-    nb_exo = mxGetM(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "exo_names")));
-    exo_name_length = mxGetN(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "exo_names")));
-    P_exo_names = (char *) mxGetPr(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "exo_names")));
-    nb_param = mxGetM(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "param_names")));
-    param_name_length = mxGetN(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "param_names")));
-    P_param_names = (char *) mxGetPr(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "param_names")));
+    if (mxGetFieldNumber(M_, "endo_names") == -1)
+      {
+        nb_endo = 0;
+        endo_name_length = 0;
+        P_endo_names = NULL;
+      }
+    else
+      {
+        nb_endo = mxGetM(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "endo_names")));
+        endo_name_length = mxGetN(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "endo_names")));
+        P_endo_names = (char *) mxGetPr(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "endo_names")));
+      }
+    if (mxGetFieldNumber(M_, "exo_names") == -1)
+      {
+        nb_exo = 0;
+        exo_name_length = 0;
+        P_exo_names = NULL;
+      }
+    else
+      {
+        nb_exo = mxGetM(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "exo_names")));
+        exo_name_length = mxGetN(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "exo_names")));
+        P_exo_names = (char *) mxGetPr(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "exo_names")));
+      }
+    if (mxGetFieldNumber(M_, "param_names") == -1)
+      {
+        nb_param = 0;
+        param_name_length = 0;
+        P_param_names = NULL;
+      }
+    else
+      {
+        nb_param = mxGetM(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "param_names")));
+        param_name_length = mxGetN(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "param_names")));
+        P_param_names = (char *) mxGetPr(mxGetFieldByNumber(M_, 0, mxGetFieldNumber(M_, "param_names")));
+      }
     is_load_variable_list = false;
   }
 
-- 
GitLab