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);