diff liboctave/Array.cc @ 5081:273205761b4d

[project @ 2004-11-17 15:15:00 by jwe]
author jwe
date Wed, 17 Nov 2004 15:15:01 +0000
parents c6ef19da4b24
children e35b034d3523
line wrap: on
line diff
--- a/liboctave/Array.cc	Tue Nov 16 21:57:50 2004 +0000
+++ b/liboctave/Array.cc	Wed Nov 17 15:15:01 2004 +0000
@@ -1934,19 +1934,27 @@
 {
   Array<T> retval;
 
-  switch (ndims ())
+  dim_vector dv = idx_arg.orig_dimensions ();
+
+  if (dv.length () > 2 || ndims () > 2)
+    retval = indexN (idx_arg, resize_ok, rfv);
+  else
     {
-    case 1:
-      retval = index1 (idx_arg, resize_ok, rfv);
-      break;
-
-    case 2:
-      retval = index2 (idx_arg, resize_ok, rfv);
-      break;
-
-    default:
-      retval = indexN (idx_arg, resize_ok, rfv);
-      break;
+      switch (ndims ())
+	{
+	case 1:
+	  retval = index1 (idx_arg, resize_ok, rfv);
+	  break;
+
+	case 2:
+	  retval = index2 (idx_arg, resize_ok, rfv);
+	  break;
+
+	default:
+	  (*current_liboctave_error_handler)
+	    ("invalid array (internal error)");
+	  break;
+	}
     }
 
   return retval;