changeset 11311:3bddc4ea8141

Fix bug #31734 where certain indices caused sparse matrices to segfault.
author Rik <octave@nomad.inbox5.com>
date Fri, 03 Dec 2010 11:46:09 -0800
parents ffbcb0edfbda
children c18526be2340
files liboctave/ChangeLog liboctave/Sparse.cc
diffstat 2 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/ChangeLog	Fri Dec 03 07:39:18 2010 -0500
+++ b/liboctave/ChangeLog	Fri Dec 03 11:46:09 2010 -0800
@@ -1,3 +1,8 @@
+2010-11-25  John W. Eaton  <jwe@octave.org>
+
+	* Sparse.cc (Sparse<T>::assign): Use correct endpoint for
+	destination range when making room for new elements. 
+
 2010-11-23  John W. Eaton  <jwe@octave.org>
 
 	* oct-md5.cc (oct_md5_result_to_str): Avoid buffer overrun in
--- a/liboctave/Sparse.cc	Fri Dec 03 07:39:18 2010 -0500
+++ b/liboctave/Sparse.cc	Fri Dec 03 11:46:09 2010 -0800
@@ -1747,10 +1747,10 @@
                   if (new_nz > nz)
                     {
                       // Make room first.
-                      std::copy_backward (data () + ui, data () + nz, data () + li + rnz);
-                      std::copy_backward (ridx () + ui, ridx () + nz, ridx () + li + rnz);
+                      std::copy_backward (data () + ui, data () + nz, data () + nz + rnz);
+                      std::copy_backward (ridx () + ui, ridx () + nz, ridx () + nz + rnz);
                     }
-
+                  
                   // Copy data and adjust indices from rhs.
                   copy_or_memcpy (rnz, rhs.data (), data () + li);
                   mx_inline_add (rnz, ridx () + li, rhs.ridx (), lb);