# HG changeset patch # User jwe # Date 1100704501 0 # Node ID 273205761b4d8c664b8647d68e13f25b584ccf9e # Parent 7929486ef2ed8d212c412c48504de7ae481657f6 [project @ 2004-11-17 15:15:00 by jwe] diff -r 7929486ef2ed -r 273205761b4d liboctave/Array.cc --- 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 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; diff -r 7929486ef2ed -r 273205761b4d liboctave/ChangeLog --- a/liboctave/ChangeLog Tue Nov 16 21:57:50 2004 +0000 +++ b/liboctave/ChangeLog Wed Nov 17 15:15:01 2004 +0000 @@ -1,3 +1,8 @@ +2004-11-17 John W. Eaton + + * Array.cc (Array::index): Call generic N-d indexing function + if idx_arg is N-d. + 2004-11-09 David Bateman * dNDArray.cc (concat): Delete. diff -r 7929486ef2ed -r 273205761b4d src/pt-arg-list.cc --- a/src/pt-arg-list.cc Tue Nov 16 21:57:50 2004 +0000 +++ b/src/pt-arg-list.cc Wed Nov 17 15:15:01 2004 +0000 @@ -129,7 +129,11 @@ { case -1: { - int numel = indexed_object->numel (); + // We want numel = prod (size ()) here, so dont' use + // index_object->numel () as that may be different (it is + // the number of nonzero elements for sparse arrays). + + int numel = dv.numel (); if (numel < 0) {