Mercurial > hg > octave-nkf
diff liboctave/idx-vector.cc @ 10702:c49911ab7ac7
implement missing copy_data case in idx_vector (bug #30099)
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Mon, 14 Jun 2010 10:41:47 +0200 |
parents | 6fb954475e21 |
children | b3f511c48b14 |
line wrap: on
line diff
--- a/liboctave/idx-vector.cc +++ b/liboctave/idx-vector.cc @@ -1014,13 +1014,14 @@ { case class_colon: retval = 1; - // fall through... + break; case class_range: retval = dynamic_cast<idx_range_rep *> (rep) -> get_step (); break; case class_vector: + case class_mask: { if (length (0) > 1) retval = elem (1) - elem (0); @@ -1087,6 +1088,17 @@ } break; + case class_mask: + { + idx_mask_rep * r = dynamic_cast<idx_mask_rep *> (rep); + const bool *mask = r->get_data (); + octave_idx_type ext = r->extent (0); + for (octave_idx_type i = 0, j = 0; i < ext; i++) + if (mask[i]) + data[j++] = i; + } + break; + default: assert (false); break;