diff liboctave/idx-vector.cc @ 2966:458cea5c8356

[project @ 1997-05-12 20:17:35 by jwe]
author jwe
date Mon, 12 May 1997 20:17:35 +0000
parents 8b262e771614
children eb827eb9b8ff
line wrap: on
line diff
--- a/liboctave/idx-vector.cc	Mon May 12 16:18:40 1997 +0000
+++ b/liboctave/idx-vector.cc	Mon May 12 20:17:35 1997 +0000
@@ -504,28 +504,39 @@
 	{
 	  colon_equiv = 1;
 	}
-      else if (len > 0 && len > 1 && ! one_zero)
+      else if (len > 1 && ! one_zero)
 	{
-	  int *tmp_data = copy_data (data, len);
-
-	  int tmp_len = len;
-
 	  if (sort_uniq)
 	    {
+	      int *tmp_data = copy_data (data, len);
+
 	      sort_data (tmp_data, len);
 
-	      tmp_len = make_uniq (tmp_data, len);
-	    }
+	      int tmp_len = make_uniq (tmp_data, len);
+
+	      colon_equiv = (tmp_len == n
+			     && tmp_data[0] == 0
+			     && tmp_data[tmp_len-1] == tmp_len - 1);
 
-	  colon_equiv = ((tmp_len == 0 && n == 0)
-			 || (tmp_len == n
-			     && tmp_data[0] == 0
-			     && tmp_data[tmp_len-1] == tmp_len - 1));
+	      delete [] tmp_data;
+	    }
+	  else
+	    {
+	      if (len == n)
+		{
+		  colon_equiv = 1;
 
-	  delete [] tmp_data;
+		  for (int ii = 0; ii < n; ii++)
+		    if (data[ii] != ii)
+		      {
+			colon_equiv = 0;
+			break;
+		      }
+		}
+	    }
 	}
       else
-	colon_equiv = (len == 1 && n == 1 && data[0] == 0);
+	colon_equiv = (len == n && (n == 0 || (n == 1 && data[0] == 0)));
 
       colon_equiv_checked = 1;
     }