changeset 9842:10519b4d6507

fix indexed numel for non-numeric indices
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 20 Nov 2009 08:19:42 +0100
parents 6f1ea8241c99
children 71483d19204f
files src/ChangeLog src/utils.cc
diffstat 2 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Fri Nov 20 08:18:41 2009 +0100
+++ b/src/ChangeLog	Fri Nov 20 08:19:42 2009 +0100
@@ -1,3 +1,8 @@
+2009-11-20  Jaroslav Hajek  <highegg@gmail.com>
+
+	* utils.cc (dims_to_numel): Fallback to index_vector query for
+	non-numeric types.
+
 2009-11-20  Jaroslav Hajek  <highegg@gmail.com>
 
 	* ov-bool.h (octave_bool::is_numeric_type): New overload.
--- a/src/utils.cc	Fri Nov 20 08:18:41 2009 +0100
+++ b/src/utils.cc	Fri Nov 20 08:19:42 2009 +0100
@@ -1027,10 +1027,18 @@
       retval = 1;
       for (octave_idx_type i = 0; i < len; i++)
         {
-          if (idx(i).is_magic_colon ())
+          octave_value idxi = idx(i);
+          if (idxi.is_magic_colon ())
             retval *= dv(i);
+          else if (idxi.is_numeric_type ())
+            retval *= idxi.numel ();
           else
-            retval *= idx(i).numel ();
+            {
+              idx_vector jdx = idxi.index_vector ();
+              if (error_state)
+                break;
+              retval *= jdx.length (dv(i));
+            }
         }
     }