# HG changeset patch # User jwe # Date 960494777 0 # Node ID b8b0f5ff28e2d33ac53dd7de4ef7397b991b2810 # Parent 0f319a2fca1276e0eeb2d1a46b9fe4d6ea2ed3fd [project @ 2000-06-08 20:06:17 by jwe] diff --git a/liboctave/Array2-idx.h b/liboctave/Array2-idx.h --- a/liboctave/Array2-idx.h +++ b/liboctave/Array2-idx.h @@ -665,6 +665,11 @@ lhs.d1 = rhs.d1; lhs.d2 = rhs.d2; } + else if (lhs_is_empty && idx_i.one_zero_only ()) + { + lhs.d1 = idx_nr; + lhs.d2 = idx_nc; + } else if (rhs_nr == 1 && (idx_nr == 1 || lhs_len == 1)) { diff --git a/liboctave/ChangeLog b/liboctave/ChangeLog --- a/liboctave/ChangeLog +++ b/liboctave/ChangeLog @@ -1,3 +1,12 @@ +2000-06-08 John W. Eaton + + * Array2-idx.h (assign): Allow x(bool) = RHS to succeed if x is + previously undefined and set size of x to size of bool index. + * idx-vector.cc (IDX_VEC_REP::maybe_convert_one_zero_to_idx): + Allow z_len to be zero. + (IDX_VEC_REP::freeze): If z_len is zero, set frozen_at_z_len to len. + If frozen, don't assert that frozen_at_z_len == z_len. + 2000-05-20 John W. Eaton * oct-rl-edit.c (octave_rl_clear_screen): Call _rl_clear_screen diff --git a/liboctave/idx-vector.cc b/liboctave/idx-vector.cc --- a/liboctave/idx-vector.cc +++ b/liboctave/idx-vector.cc @@ -405,7 +405,7 @@ void IDX_VEC_REP::maybe_convert_one_zero_to_idx (int z_len) { - if (one_zero && z_len == len) + if (one_zero && (z_len == len || z_len == 0)) { if (num_ones == 0) { @@ -585,10 +585,7 @@ IDX_VEC_REP::freeze (int z_len, const char *tag, int resize_ok) { if (frozen) - { - assert (frozen_at_z_len == z_len); - return frozen_len; - } + return frozen_len; frozen_len = -1; @@ -633,7 +630,8 @@ } frozen = 1; - frozen_at_z_len = z_len; + + frozen_at_z_len = z_len ? z_len : len; return frozen_len; }