diff --git a/externals/iem/iemmatrix/src/mtx_bessel.c b/externals/iem/iemmatrix/src/mtx_bessel.c index 458100cc1e6dfd933255d2675db8603cbe54fbd7..8d61c367dbc24dea3907d158d6458bc92482c57d 100644 --- a/externals/iem/iemmatrix/src/mtx_bessel.c +++ b/externals/iem/iemmatrix/src/mtx_bessel.c @@ -83,7 +83,7 @@ static void *newMTXBessel (t_symbol *s, int argc, t_atom *argv) x->h_re = 0; x->h_im = 0; x->l=0; - fsym=atom_getsymbol(argv); + fsym= argc ? atom_getsymbol(argv) : &s_; if (fsym->s_name!=0) whichfunction=fsym->s_name[0]; switch (whichfunction) { @@ -96,7 +96,7 @@ static void *newMTXBessel (t_symbol *s, int argc, t_atom *argv) case 'Y': x->list_h_im_out = outlet_new (&x->x_obj, gensym("matrix")); } - nmax=(int) atom_getfloat(argv+1); + nmax= argc > 1 ? (int) atom_getfloat(argv+1) : 0; if (nmax<0) nmax=0; x->nmax=nmax; diff --git a/externals/iem/iemmatrix/src/mtx_eig.c b/externals/iem/iemmatrix/src/mtx_eig.c index 1ab90c96fefa5ba8d425c6f214ab4759d464683d..e9474f0aad1f7101d2545b1babbfbeaa6e1f9b0c 100644 --- a/externals/iem/iemmatrix/src/mtx_eig.c +++ b/externals/iem/iemmatrix/src/mtx_eig.c @@ -114,7 +114,7 @@ static void *newMTXEig (t_symbol *s, int argc, t_atom *argv) x->list_l_out_re = outlet_new (&x->x_obj, gensym("list")); x->list_l_out_im = outlet_new (&x->x_obj, gensym("list")); - if (atom_getsymbol(argv)==gensym("v")) { + if (argc && atom_getsymbol(argv)==gensym("v")) { x->withevs=1; x->list_q_out_re = outlet_new (&x->x_obj, gensym("matrix")); x->list_q_out_im = outlet_new (&x->x_obj, gensym("matrix")); diff --git a/externals/iem/iemmatrix/src/mtx_ei~.c b/externals/iem/iemmatrix/src/mtx_ei~.c index e461bf2693e6387447eab49901915d27bb69b9ff..5f8f7f22b0fc569444bfec1464b248dec70bc9f3 100755 --- a/externals/iem/iemmatrix/src/mtx_ei~.c +++ b/externals/iem/iemmatrix/src/mtx_ei~.c @@ -22,6 +22,7 @@ void *newMtxEITilde(t_symbol *s, int argc, t_atom *argv) { int sd=1; int sg=1; + t_atom sane_defaults[1]; mtx_ei_tilde *x = (mtx_ei_tilde*) pd_new(mtx_ei_tilde_class); x->sig_in_left=0; x->sig_in_right=0; @@ -32,6 +33,12 @@ void *newMtxEITilde(t_symbol *s, int argc, t_atom *argv) inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal); x->message_outlet=(t_outlet*)outlet_new(&x->x_obj,&s_list); + /* Prevent an invalid read */ + if (!argc) { + SETFLOAT(sane_defaults, 0.); + argv = sane_defaults; + argc = 1; + } if (argc > 2) { sd = atom_getint(argv++); sg = argc-1; diff --git a/externals/iem/iemmatrix/src/mtx_spherical_harmonics.c b/externals/iem/iemmatrix/src/mtx_spherical_harmonics.c index 8ecc9a4b9615b62766bc6724d35e37822e194b8d..72b22bb305f0a862c09c0dea008e57821894c164 100644 --- a/externals/iem/iemmatrix/src/mtx_spherical_harmonics.c +++ b/externals/iem/iemmatrix/src/mtx_spherical_harmonics.c @@ -83,7 +83,7 @@ static void *newMTXSh (t_symbol *s, int argc, t_atom *argv) x->theta = 0; x->ws = 0; x->l=0; - nmax=(int) atom_getfloat(argv); + nmax= argc ? (int) atom_getfloat(argv) : 0; if (nmax<0) nmax=0; x->nmax=nmax; diff --git a/externals/iem/iemmatrix/src/mtx_spherical_radial.c b/externals/iem/iemmatrix/src/mtx_spherical_radial.c index 9f3fd6d66c602ebd1f1b64486ed7545ed18cc836..703914e10cc8b97e5f339a0f22e9883cf1a5a513 100644 --- a/externals/iem/iemmatrix/src/mtx_spherical_radial.c +++ b/externals/iem/iemmatrix/src/mtx_spherical_radial.c @@ -80,7 +80,7 @@ static void *newMTXSph (t_symbol *s, int argc, t_atom *argv) x->h_re = 0; x->h_im = 0; x->l=0; - fsym=atom_getsymbol(argv); + fsym= argc ? atom_getsymbol(argv) : &s_; if (fsym->s_name!=0) whichfunction=fsym->s_name[0]; switch (whichfunction) { @@ -93,7 +93,7 @@ static void *newMTXSph (t_symbol *s, int argc, t_atom *argv) case 'y': x->list_h_im_out = outlet_new (&x->x_obj, gensym("matrix")); } - nmax=(int) atom_getfloat(argv+1); + nmax= argc > 1 ? (int) atom_getfloat(argv+1) : 0; if (nmax<0) nmax=0; x->nmax=nmax;