# HG changeset patch # User Lachlan Andrew # Date 1452332449 -39600 # Node ID 6209f428426cdbe9d8f403932526491c5d35ec2c # Parent f09f7dd58503a213581971b441650bfb9c3cafb4 Fix memory corruption allocating to sparse arrays (bug #42825). * liboctave/array/Sparse.cc (Sparse::assign): make room by using std::copy_backward. diff -r f09f7dd58503 -r 6209f428426c liboctave/array/Sparse.cc --- 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); }