From e39407c483c6a5901b85761d93c2a6d8cdc60a53 Mon Sep 17 00:00:00 2001 From: Andrew Bell Date: Wed, 4 Feb 2015 15:26:51 -0600 Subject: [PATCH] Make sure that hexrep is properly sized before appending to insertion buffer. Close #746 Close #747 --- plugins/pgpointcloud/io/PgWriter.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/pgpointcloud/io/PgWriter.cpp b/plugins/pgpointcloud/io/PgWriter.cpp index 5cc1955701..ed8888474f 100644 --- a/plugins/pgpointcloud/io/PgWriter.cpp +++ b/plugins/pgpointcloud/io/PgWriter.cpp @@ -451,12 +451,12 @@ void PgWriter::writeTile(PointBuffer const& buffer) std::vector storage(m_packedPointSize); std::string hexrep; - hexrep.resize(m_packedPointSize * buffer.size() * 2); + size_t maxHexrepSize = m_packedPointSize * buffer.size() * 2; + hexrep.reserve(maxHexrepSize); m_insert.clear(); - m_insert.reserve(hexrep.size() + 3000); + m_insert.reserve(maxHexrepSize + 3000); - size_t pos = 0; for (PointId idx = 0; idx < buffer.size(); ++idx) { size_t written = readPoint(buffer, idx, storage.data()); @@ -467,8 +467,8 @@ void PgWriter::writeTile(PointBuffer const& buffer) static char syms[] = "0123456789ABCDEF"; for (size_t i = 0; i != written; i++) { - hexrep[pos++] = syms[((storage[i] >> 4) & 0xf)]; - hexrep[pos++] = syms[storage[i] & 0xf]; + hexrep.push_back(syms[((storage[i] >> 4) & 0xf)]); + hexrep.push_back(syms[storage[i] & 0xf]); } }