Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/coding
diff options
context:
space:
mode:
authorYury Melnichek <melnichek@gmail.com>2012-09-25 21:37:18 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:43:50 +0300
commit1aabac1393098d8ce12b059cfe712c648b42fc56 (patch)
tree627f1b669051d38bc767fc910cb3689d198a304d /coding
parent122429fbf20f839cd36db16713891228bc1c4ec0 (diff)
BlobStorage: more code review fixes.
Diffstat (limited to 'coding')
-rw-r--r--coding/blob_storage.cpp15
-rw-r--r--coding/dd_vector.hpp5
2 files changed, 14 insertions, 6 deletions
diff --git a/coding/blob_storage.cpp b/coding/blob_storage.cpp
index d35f7e13ba..21995fdaf9 100644
--- a/coding/blob_storage.cpp
+++ b/coding/blob_storage.cpp
@@ -36,21 +36,24 @@ BlobStorage::~BlobStorage()
void BlobStorage::Init()
{
- string header(3, ' ');
- ReadFromPos(*m_pReader, 0, &header[0], 3);
+ uint32_t const HEADER_TAG_SIZE = 3;
+ uint32_t const HEADER_SIZE = 4;
+ string header(HEADER_TAG_SIZE, ' ');
+ ReadFromPos(*m_pReader, 0, &header[0], HEADER_TAG_SIZE);
if (header != "Blb")
MYTHROW(BlobStorage::OpenException, (header));
- m_bitsInChunkSize = ReadPrimitiveFromPos<uint8_t>(*m_pReader, 3);
+
+ m_bitsInChunkSize = ReadPrimitiveFromPos<uint8_t>(*m_pReader, HEADER_TAG_SIZE);
uint64_t const fileSize = m_pReader->Size();
- uint32_t const blobCount = ReadPrimitiveFromPos<uint32_t>(*m_pReader, fileSize - 4);
+ uint32_t const blobCount = ReadPrimitiveFromPos<uint32_t>(*m_pReader, fileSize - HEADER_SIZE);
m_blobInfo.Init(PolymorphReader(m_pReader->CreateSubReader(
- fileSize - 4 - 4 * blobCount,
+ fileSize - HEADER_SIZE - 4 * blobCount,
4 * blobCount)));
uint32_t const chunkCount =
(blobCount > 0 ? (m_blobInfo[blobCount - 1] >> m_bitsInChunkSize) + 1 : 0);
m_chunkOffset.Init(PolymorphReader(m_pReader->CreateSubReader(
- fileSize - 4 - 4 * blobCount - 4 * chunkCount,
+ fileSize - HEADER_SIZE - 4 * blobCount - 4 * chunkCount,
4 * chunkCount)));
}
diff --git a/coding/dd_vector.hpp b/coding/dd_vector.hpp
index 3661c18f64..f31452d6d9 100644
--- a/coding/dd_vector.hpp
+++ b/coding/dd_vector.hpp
@@ -4,6 +4,7 @@
#include "../base/assert.hpp"
#include "../base/base.hpp"
+#include "../base/exception.hpp"
#include "../base/src_point.hpp"
#include "../std/type_traits.hpp"
@@ -23,6 +24,8 @@ public:
typedef TDifference difference_type;
typedef TReader ReaderType;
+ DECLARE_EXCEPTION(OpenException, RootException);
+
DDVector() : m_Size(0) {}
explicit DDVector(TReader const & reader) : m_reader(reader)
@@ -163,6 +166,8 @@ public:
private:
void InitSize()
{
+ if ((m_reader.Size() % sizeof(T)) != 0)
+ MYTHROW(OpenException, (m_reader.Size(), sizeof(T)));
// TODO: Check that reader.Size() % sizeof(T) == 0
m_Size = m_reader.Size() / sizeof(T);
}