From 684d8ac8226956a4397332bb6c0ac141a0cd58ae Mon Sep 17 00:00:00 2001 From: george Date: Sun, 6 Dec 2009 00:03:22 +0000 Subject: [PATCH] Cleared up DynareMxArrayToString in k_order_perturbation.cpp and changed #ifdef to #if defined() in dynamic_dll.cpp git-svn-id: https://www.dynare.org/svn/dynare/trunk@3195 ac1d8469-bf42-47a9-8791-bf33cf982152 --- mex/sources/k_order_perturbation/dynamic_dll.cpp | 4 ++-- .../k_order_perturbation.cpp | 16 ++++------------ 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/mex/sources/k_order_perturbation/dynamic_dll.cpp b/mex/sources/k_order_perturbation/dynamic_dll.cpp index 4219be97c..3e1f75fb2 100644 --- a/mex/sources/k_order_perturbation/dynamic_dll.cpp +++ b/mex/sources/k_order_perturbation/dynamic_dll.cpp @@ -31,14 +31,14 @@ DynamicModelDLL::DynamicModelDLL(const string &modName, const int y_length, cons : length(y_length), jcols(j_cols), nMax_lag(n_max_lag), nExog(n_exog) { string fName; -#ifndef _WIN32 +#if !defined(__CYGWIN32__) && !defined(_WIN32) fName = "./"; #endif fName += modName + "_dynamic" + sExt; try { -#ifdef _WIN32 +#if defined(__CYGWIN32__) || defined(_WIN32) HINSTANCE dynamicHinstance; dynamicHinstance = ::LoadLibrary(fName.c_str()); if (dynamicHinstance == NULL) diff --git a/mex/sources/k_order_perturbation/k_order_perturbation.cpp b/mex/sources/k_order_perturbation/k_order_perturbation.cpp index da2a65fe8..964187071 100644 --- a/mex/sources/k_order_perturbation/k_order_perturbation.cpp +++ b/mex/sources/k_order_perturbation/k_order_perturbation.cpp @@ -99,16 +99,7 @@ DynareMxArrayToString(const char *cNamesCharStr, const int len, const int width) else cNamesMX[j][i] = '\0'; } } - const char **ret = (const char **) calloc(len, sizeof(char *)); - for (int j = 0; j < len; j++) - { - cNamesMX[j][width] = '\0'; - char *token = (char *) calloc(strlen(cNamesMX[j])+1, sizeof(char)); - strcpy(token, cNamesMX[j]); - ret[j] = token; - } - mxFree(cNamesMX); - return ret; + return (const char **)cNamesMX; } ////////////////////////////////////////////////////// @@ -121,6 +112,7 @@ DynareMxArrayToString(const mxArray *mxFldp, const int len, const int width) { char *cNamesCharStr = mxArrayToString(mxFldp); const char **ret = DynareMxArrayToString(cNamesCharStr, len, width); + return ret; } @@ -135,7 +127,7 @@ extern "C" { mexErrMsgTxt("Must have at least 5 input parameters."); if (nlhs == 0) mexErrMsgTxt("Must have at least 1 output parameter."); - + const mxArray *dr = prhs[0]; const int check_flag = (int) mxGetScalar(prhs[1]); const mxArray *M_ = prhs[2]; @@ -271,7 +263,7 @@ extern "C" { sstol, var_order_vp, llincidence, qz_criterium); // construct main K-order approximation class - + Approximation app(dynare, journal, nSteps, false, qz_criterium); // run stochastic steady app.walkStochSteady();