view examples/code/myset.c @ 20633:ffc6cdcd02c5 stable

Fix segfault when complex double matrix calls ZGETRF (bug #45577). * CMatrix.cc (finverse, determinant, rcond, fsolve): Calculate norm of matrix and if it is NaN, skip calling ZGETRF in LAPACK and set info to non-zero value to signal an error.
author Rik <rik@octave.org>
date Sat, 10 Oct 2015 16:46:00 -0700
parents 5c42ff6f0eb1
children
line wrap: on
line source

#include "mex.h"

void
mexFunction (int nlhs, mxArray* plhs[],
             int nrhs, const mxArray* prhs[])
{
  char *str;
  mxArray *v;
  int found = 0;

  if (nrhs != 2 || ! mxIsChar (prhs[0]))
    mexErrMsgTxt ("Arguments must be a symbol name and a value");

  str = mxArrayToString (prhs[0]);

  // FIXME: If variable does not exist, error is reported which prevents
  //        subsequent mexGetArray function from working.
  v = mexGetArray (str, "global");
  if (v)
    {
      mexPrintf ("%s is a global variable with the following value:\n", str);
      mexCallMATLAB (0, NULL, 1, &v, "disp");
      found = 1;
    }

  if (! found)
    v = mexGetArray (str, "caller");

  if (! found && v)
    {
      mexPrintf ("%s is a caller variable with the following value:\n", str);
      mexCallMATLAB (0, NULL, 1, &v, "disp");
    }

  // WARNING!! Can't do this in MATLAB!  Must copy variable first.
  mexPutVariable ("caller", str, prhs[1]);
}