Mercurial > hg > octave-nkf
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 +++ b/liboctave/ChangeLog @@ -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 +++ b/liboctave/Sparse.cc @@ -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);