Mercurial > hg > octave-nkf
diff liboctave/Array.cc @ 10703:5eb420d92307
fix sort and nth_element when trailing singleton dim is specified
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Mon, 14 Jun 2010 14:53:11 +0200 |
parents | 0ba9bd294421 |
children | f7f26094021b |
line wrap: on
line diff
--- a/liboctave/Array.cc +++ b/liboctave/Array.cc @@ -1682,7 +1682,7 @@ Array<T> Array<T>::sort (int dim, sortmode mode) const { - if (dim < 0 || dim >= ndims ()) + if (dim < 0) { (*current_liboctave_error_handler) ("sort: invalid dimension"); @@ -1696,6 +1696,9 @@ if (m.length () < 1) return m; + if (dim >= dv.length ()) + dv.resize (dim+1, 1); + octave_idx_type ns = dv(dim); octave_idx_type iter = dv.numel () / ns; octave_idx_type stride = 1; @@ -2228,7 +2231,7 @@ Array<T> Array<T>::nth_element (const idx_vector& n, int dim) const { - if (dim < 0 || dim >= ndims ()) + if (dim < 0) { (*current_liboctave_error_handler) ("nth_element: invalid dimension"); @@ -2236,6 +2239,9 @@ } dim_vector dv = dims (); + if (dim >= dv.length ()) + dv.resize (dim+1, 1); + octave_idx_type ns = dv(dim); octave_idx_type nn = n.length (ns);