# HG changeset patch # User John W. Eaton # Date 1296715200 18000 # Node ID f39436e14734bb3bf25a8c234ce3f83e6336e767 # Parent 60b6b175f88ac606c5f568786c785af16a6cb9cb 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 -r 60b6b175f88a -r f39436e14734 src/ChangeLog --- a/src/ChangeLog Thu Feb 03 01:04:41 2011 -0500 +++ b/src/ChangeLog Thu Feb 03 01:40:00 2011 -0500 @@ -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 -r 60b6b175f88a -r f39436e14734 src/mex.cc --- a/src/mex.cc Thu Feb 03 01:04:41 2011 -0500 +++ b/src/mex.cc Thu Feb 03 01:40:00 2011 -0500 @@ -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 -r 60b6b175f88a -r f39436e14734 src/ov-base.cc --- a/src/ov-base.cc Thu Feb 03 01:04:41 2011 -0500 +++ b/src/ov-base.cc Thu Feb 03 01:40:00 2011 -0500 @@ -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; }