changeset 3680:b8b0f5ff28e2

[project @ 2000-06-08 20:06:17 by jwe]
author jwe
date Thu, 08 Jun 2000 20:06:17 +0000
parents 0f319a2fca12
children df54d394acc0
files liboctave/Array2-idx.h liboctave/ChangeLog liboctave/idx-vector.cc
diffstat 3 files changed, 18 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- 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))
 			    {
--- a/liboctave/ChangeLog
+++ b/liboctave/ChangeLog
@@ -1,3 +1,12 @@
+2000-06-08  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* 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  <jwe@bevo.che.wisc.edu>
 
 	* oct-rl-edit.c (octave_rl_clear_screen): Call _rl_clear_screen
--- 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;
 }