diff src/DLD-FUNCTIONS/sub2ind.cc @ 9666:a531dec450c4

allow 1D case for sub2ind and ind2sub
author Jaroslav Hajek <highegg@gmail.com>
date Sun, 27 Sep 2009 11:26:41 +0200
parents d9716e3ee0dd
children e317791645c4
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/sub2ind.cc	Sat Sep 26 10:41:07 2009 +0200
+++ b/src/DLD-FUNCTIONS/sub2ind.cc	Sun Sep 27 11:26:41 2009 +0200
@@ -40,12 +40,13 @@
   dim_vector dv;
   octave_idx_type n = dimsv.length ();
 
-  if (n < 2)
-    error ("%s: dimension vector must have at least 2 elements", name);
+  if (n < 1)
+    error ("%s: dimension vector must not be empty", name);
   else
     {
-      dv.resize (n);
-      for (octave_idx_type i = 0; i < dimsv.length (); i++)
+      dv.resize (std::max (n, 2));
+      dv(1) = 1;
+      for (octave_idx_type i = 0; i < n; i++)
         {
           octave_idx_type ii = static_cast<int> (dimsv(i));
           if (ii == dimsv(i) && ii >= 0)
@@ -84,13 +85,12 @@
   int nargin = args.length ();
   octave_value retval;
 
-  if (nargin < 3)
+  if (nargin < 2)
     print_usage ();
   else
     {
       dim_vector dv = get_dim_vector (args(0), "sub2ind");
       Array<idx_vector> idxa (nargin - 1);
-      dim_vector idims;
 
       if (! error_state)
         {