# HG changeset patch # User Jaroslav Hajek # Date 1273555520 -7200 # Node ID 6fb954475e21432d95044476c8ae28906427d91e # Parent 9f0a264d2f602862a2c7fb7c84515e0698067175 fix off-by-1 error in idx_vector (bug #29851) diff -r 9f0a264d2f60 -r 6fb954475e21 liboctave/ChangeLog --- a/liboctave/ChangeLog Fri May 07 12:40:06 2010 +0200 +++ b/liboctave/ChangeLog Tue May 11 07:25:20 2010 +0200 @@ -1,3 +1,7 @@ +2010-05-11 Jaroslav Hajek + + * idx-vector.cc (idx_vector::unmask): Fix off-by-1 bug. Add tests. + 2010-05-06 Jaroslav Hajek * Array.cc (Array::delete_elements (const idx_vector&)): Only call diff -r 9f0a264d2f60 -r 6fb954475e21 liboctave/idx-vector.cc --- a/liboctave/idx-vector.cc Fri May 07 12:40:06 2010 +0200 +++ b/liboctave/idx-vector.cc Tue May 11 07:25:20 2010 +0200 @@ -1202,7 +1202,7 @@ if (data[i]) idata[j++] = i; - ext = len > 0 ? idata[len - 1] : 0; + ext = len > 0 ? idata[len - 1] + 1 : 0; return new idx_vector_rep (idata, len, ext, r->orig_dimensions (), DIRECT); @@ -1313,3 +1313,10 @@ INSTANTIATE_SCALAR_VECTOR_REP_CONST (octave_uint16) INSTANTIATE_SCALAR_VECTOR_REP_CONST (octave_uint32) INSTANTIATE_SCALAR_VECTOR_REP_CONST (octave_uint64) + +/* + +%!error id=Octave:index-out-of-bounds 1(find([1,1] != 0)) +%!assert ((1:3)(find([1,0,1] != 0)), [1,3]) + +*/