From 24d81aeb20330f185b4589a26568960e7f5aa395 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Mon, 4 Mar 2013 17:47:45 +0100 Subject: [PATCH] Fix overlaping operands when calling memcpy --- Eigen/src/SparseCore/SparseBlock.h | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/Eigen/src/SparseCore/SparseBlock.h b/Eigen/src/SparseCore/SparseBlock.h index cd97bcfdc..f50fb66ea 100644 --- a/Eigen/src/SparseCore/SparseBlock.h +++ b/Eigen/src/SparseCore/SparseBlock.h @@ -156,19 +156,8 @@ public: // no need to realloc, simply copy the tail at its respective position and insert tmp matrix.data().resize(nnz_head + nnz + nnz_tail); - if(nnz=0; --i) - { - matrix.data().value(nnz_head+nnz+i) = matrix.data().value(tail+i); - matrix.data().index(nnz_head+nnz+i) = matrix.data().index(tail+i); - } - } + std::memmove(&matrix.data().value(nnz_head+nnz), &matrix.data().value(tail), nnz_tail*sizeof(Scalar)); + std::memmove(&matrix.data().index(nnz_head+nnz), &matrix.data().index(tail), nnz_tail*sizeof(Index)); std::memcpy(&matrix.data().value(nnz_head), &tmp.data().value(0), nnz*sizeof(Scalar)); std::memcpy(&matrix.data().index(nnz_head), &tmp.data().index(0), nnz*sizeof(Index));