changeset 6883:037c8b622a01

[project @ 2007-09-10 20:13:27 by jwe]
author jwe
date Mon, 10 Sep 2007 20:15:17 +0000
parents 62cf34f42539
children 1cbb8b606d63
files src/ChangeLog src/data.cc src/genprops.awk
diffstat 3 files changed, 24 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Sat Sep 08 00:50:09 2007 +0000
+++ b/src/ChangeLog	Mon Sep 10 20:15:17 2007 +0000
@@ -1,3 +1,12 @@
+2007-09-10  John W. Eaton  <jwe@octave.org>
+
+	* genprops.awk: Add missing newline character at end of file.
+	From Alexander Klimov <alserkli@inbox.ru>.
+
+2007-09-10  David Bateman  <dbateman@free.fr>
+
+	* data.cc (do_cat): Avoid invalid indexing into ra_idx vector.
+
 2007-09-06  David Bateman  <dbateman@free.fr>
 
 	* DLD-FUNCTIONS/__delaunay__.cc, DLD-FUNCRIONS/__voronoi__.cc,
--- a/src/data.cc	Sat Sep 08 00:50:09 2007 +0000
+++ b/src/data.cc	Mon Sep 10 20:15:17 2007 +0000
@@ -759,10 +759,14 @@
 	      if (error_state)
 		return retval;
 
-	      Array<octave_idx_type> ra_idx (dv.length (), 0);
+	      int dv_len = dv.length ();
+	      Array<octave_idx_type> ra_idx (dv_len, 0);
 
 	      for (int j = i; j < n_args; j++)
 		{
+		  if (args (j). all_zero_dims ())
+		    continue;
+
 		  tmp = do_cat_op (tmp, args (j), ra_idx);
 
 		  if (error_state)
@@ -770,7 +774,15 @@
 
 		  dim_vector dv_tmp = args (j).dims ();
 
-		  ra_idx (dim) += (dim < dv_tmp.length () ? dv_tmp (dim) : 1);
+		  if (dim >= dv_len)
+		    {
+		      if (j > i)
+			error ("%s: indexing error", fname.c_str ());
+		      break;
+		    }
+		  else
+		    ra_idx (dim) += (dim < dv_tmp.length () ? 
+				     dv_tmp (dim) : 1);
 		}
 
 	      retval = tmp;
--- a/src/genprops.awk	Sat Sep 08 00:50:09 2007 +0000
+++ b/src/genprops.awk	Mon Sep 10 20:15:17 2007 +0000
@@ -217,4 +217,4 @@
     }
   else
       print $0;
-}
\ No newline at end of file
+}