# HG changeset patch # User dbateman # Date 1173454485 0 # Node ID f8cbc0871ed641d490c5120287a76f11885ec058 # Parent 566343604d9525118f9cf8b4201ca2690994b2c6 [project @ 2007-03-09 15:34:45 by dbateman] diff -r 566343604d95 -r f8cbc0871ed6 src/ChangeLog --- a/src/ChangeLog Thu Mar 08 22:58:23 2007 +0000 +++ b/src/ChangeLog Fri Mar 09 15:34:45 2007 +0000 @@ -1,3 +1,7 @@ +2007-03-09 David Bateman + + * data.cc (do_cat): Also treat case of all empty matrices. + 2007-03-08 John W. Eaton * mex.cc (mxArray_octave_value::set_dimensions, diff -r 566343604d95 -r f8cbc0871ed6 src/data.cc --- a/src/data.cc Thu Mar 08 22:58:23 2007 +0000 +++ b/src/data.cc Fri Mar 09 15:34:45 2007 +0000 @@ -746,26 +746,31 @@ } } - tmp = tmp.resize (dim_vector (0,0)).resize (dv); - - if (error_state) - return retval; - - Array ra_idx (dv.length (), 0); - - for (int j = i; j < n_args; j++) + if (i == n_args) + retval = Matrix (); + else { - tmp = do_cat_op (tmp, args (j), ra_idx); + tmp = tmp.resize (dim_vector (0,0)).resize (dv); if (error_state) return retval; - dim_vector dv_tmp = args (j).dims (); - - ra_idx (dim) += (dim < dv_tmp.length () ? dv_tmp (dim) : 1); + Array ra_idx (dv.length (), 0); + + for (int j = i; j < n_args; j++) + { + tmp = do_cat_op (tmp, args (j), ra_idx); + + if (error_state) + return retval; + + dim_vector dv_tmp = args (j).dims (); + + ra_idx (dim) += (dim < dv_tmp.length () ? dv_tmp (dim) : 1); + } + + retval = tmp; } - - retval = tmp; } else error ("%s: invalid dimension argument", fname.c_str ());