Mercurial > octave
changeset 21255:6209f428426c stable
Fix memory corruption allocating to sparse arrays (bug #42825).
* liboctave/array/Sparse.cc (Sparse<T>::assign): make room by using
std::copy_backward.
author | Lachlan Andrew <lachlanbis@gmail.com> |
---|---|
date | Sat, 09 Jan 2016 20:40:49 +1100 |
parents | f09f7dd58503 |
children | a93fa1b0796e |
files | liboctave/array/Sparse.cc |
diffstat | 1 files changed, 4 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/array/Sparse.cc Wed Feb 10 14:57:56 2016 -0500 +++ b/liboctave/array/Sparse.cc Sat Jan 09 20:40:49 2016 +1100 @@ -2069,10 +2069,10 @@ if (new_nz > nz) { // Make room first. - std::copy (data () + ui, data () + nz, - data () + li + rnz); - std::copy (ridx () + ui, ridx () + nz, - ridx () + li + rnz); + std::copy_backward (data () + ui, data () + nz, + data () + new_nz); + std::copy_backward (ridx () + ui, ridx () + nz, + ridx () + new_nz); mx_inline_add2 (nc - ub, cidx () + ub + 1, new_nz - nz); }