# HG changeset patch # User David Bateman # Date 1205869183 14400 # Node ID abe3831a5fc1ee84d8d9ec2356f93c846e147393 # Parent ca0e5cfe59d10d97611398dce7ab4cf95c81a927 shortened empty indexing fix diff -r ca0e5cfe59d1 -r abe3831a5fc1 liboctave/Array.cc --- a/liboctave/Array.cc Tue Mar 18 14:46:41 2008 -0400 +++ b/liboctave/Array.cc Tue Mar 18 15:39:43 2008 -0400 @@ -2392,7 +2392,7 @@ dim_vector new_dims = dims (); dim_vector frozen_lengths; - if (! any_orig_empty (ra_idx) && ra_idx_len < n_dims) + if (!ra_idx (ra_idx_len - 1).orig_empty () && ra_idx_len < n_dims) frozen_lengths = short_freeze (ra_idx, dimensions, resize_ok); else { diff -r ca0e5cfe59d1 -r abe3831a5fc1 liboctave/ChangeLog --- a/liboctave/ChangeLog Tue Mar 18 14:46:41 2008 -0400 +++ b/liboctave/ChangeLog Tue Mar 18 15:39:43 2008 -0400 @@ -1,3 +1,8 @@ +2008-03-18 David Bateman + + * Array.cc (Array::index): Don't short_freeze on index with + fewer dimensions than the array only if the last dimension is empty. + 2008-03-18 John W. Eaton * oct-inttypes.h (OCTAVE_DBL_FTR): New macro. diff -r ca0e5cfe59d1 -r abe3831a5fc1 test/test_index-wfi-f.m --- a/test/test_index-wfi-f.m Tue Mar 18 14:46:41 2008 -0400 +++ b/test/test_index-wfi-f.m Tue Mar 18 15:39:43 2008 -0400 @@ -418,6 +418,8 @@ %! b9 = [1, 2, 5, 6]; %! b10 = zeros (1, 0, 2); %! b11 = zeros (1, 0); +%! b12 = [5; 7]; +%! b13 = zeros (0, 1); %! %! assert(a(:),a1); %! assert(a(1:2), a2); @@ -443,4 +445,9 @@ %! assert(b(1,1:4), b9); %! assert(b(1,[],:), b10); %! assert(b(1,[]), b11); +%! assert (b(:,3), b12); +%! assert (b([1,2],3), b12); +%! assert (b(true(2,1),3), b12); +%! assert (b(false(2,1),3), b13) +%! assert (b([],3), b13) %! warning ("wfi.state", "Octave:fortran-indexing");