# HG changeset patch # User John W. Eaton # Date 1296715200 18000 # Node ID 4f4eb7da82d56b0013e63e2006b60e6873122355 # Parent 3dd1b0b36f13df4b339ed5efeae169008fc366ec mex.cc (mxArray_octave_value::dup): if value can't be converted to mxArray object, create a clone of the mxArray_octave_value container diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2011-02-03 John W. Eaton + + * ov-base.cc (octave_base_value::as_mxArray): Return 0 silently. + * mex.cc (mxArray_octave_value::dup): If value can't be + converted to mxArray object, then simply create a clone of the + mxArray_octave_value container. + 2010-02-02 Rik * DLD-FUNCTIONS/eigs.cc, DLD-FUNCTIONS/qr.cc: Use testif to only run diff --git a/src/mex.cc b/src/mex.cc --- a/src/mex.cc +++ b/src/mex.cc @@ -327,7 +327,13 @@ : mxArray_base (), val (ov), mutate_flag (false), id (mxUNKNOWN_CLASS), class_name (0), ndims (-1), dims (0) { } - mxArray *dup (void) const { return val.as_mxArray (); } + mxArray *dup (void) const + { + mxArray *retval = val.as_mxArray (); + + if (! retval) + retval = new mxArray_octave_value (*this); + } ~mxArray_octave_value (void) { diff --git a/src/ov-base.cc b/src/ov-base.cc --- a/src/ov-base.cc +++ b/src/ov-base.cc @@ -1106,8 +1106,6 @@ mxArray * octave_base_value::as_mxArray (void) const { - gripe_wrong_type_arg ("octave_base_value::as_mxArray ()", type_name ()); - return 0; }