From a101457cf0ea7571440eb139fd70667253beccdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Mon, 15 Apr 2019 17:32:53 +0200 Subject: [PATCH] k-order DLL: fix wrong assertion in MATLAB mode Bug introduced in 4c6e911d6 (only apparent under Octave, since under MATLAB assertions are skipped). Ref #217 --- mex/sources/k_order_perturbation/dynamic_m.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mex/sources/k_order_perturbation/dynamic_m.cc b/mex/sources/k_order_perturbation/dynamic_m.cc index 0116d7f83..e620c0c8d 100644 --- a/mex/sources/k_order_perturbation/dynamic_m.cc +++ b/mex/sources/k_order_perturbation/dynamic_m.cc @@ -125,11 +125,12 @@ DynamicModelMFile::eval(const Vector &y, const Vector &x, const Vector &modParam if (retVal != 0) throw DynareException(__FILE__, __LINE__, "Trouble calling " + funcname); - assert(static_cast(mxGetM(plhs[0])) == md[i-1].nrows()); - assert(static_cast(mxGetN(plhs[0])) == md[i-1].ncols()); - if (i == 1) - std::copy_n(mxGetPr(plhs[0]), mxGetM(plhs[0])*mxGetN(plhs[0]), md[i-1].base()); + { + assert(static_cast(mxGetM(plhs[0])) == md[i-1].nrows()); + assert(static_cast(mxGetN(plhs[0])) == md[i-1].ncols()); + std::copy_n(mxGetPr(plhs[0]), mxGetM(plhs[0])*mxGetN(plhs[0]), md[i-1].base()); + } else unpackSparseMatrixAndCopyIntoTwoDMatData(plhs[0], md[i-1]);