Skip to content

Commit

Permalink
TessdataManager: Use new serialization API
Browse files Browse the repository at this point in the history
Signed-off-by: Stefan Weil <sw@weilnetz.de>
  • Loading branch information
stweil committed Jul 18, 2018
1 parent da0217f commit 88b3d94
Showing 1 changed file with 9 additions and 11 deletions.
20 changes: 9 additions & 11 deletions src/ccutil/tessdatamanager.cpp
Expand Up @@ -69,25 +69,23 @@ bool TessdataManager::LoadMemBuffer(const char *name, const char *data,
data_file_name_ = name;
TFile fp;
fp.Open(data, size);
int32_t num_entries = TESSDATA_NUM_ENTRIES;
if (fp.FRead(&num_entries, sizeof(num_entries), 1) != 1) return false;
swap_ = num_entries > kMaxNumTessdataEntries || num_entries < 0;
uint32_t num_entries;
if (!fp.DeSerialize(&num_entries)) return false;
swap_ = num_entries > kMaxNumTessdataEntries;
fp.set_swap(swap_);
if (swap_) ReverseN(&num_entries, sizeof(num_entries));
if (num_entries > kMaxNumTessdataEntries || num_entries < 0) return false;
if (num_entries > kMaxNumTessdataEntries) return false;
GenericVector<int64_t> offset_table;
offset_table.resize_no_init(num_entries);
if (fp.FReadEndian(&offset_table[0], sizeof(offset_table[0]), num_entries) !=
num_entries)
return false;
if (!fp.DeSerialize(&offset_table[0], num_entries)) return false;
for (int i = 0; i < num_entries && i < TESSDATA_NUM_ENTRIES; ++i) {
if (offset_table[i] >= 0) {
int64_t entry_size = size - offset_table[i];
int j = i + 1;
while (j < num_entries && offset_table[j] == -1) ++j;
if (j < num_entries) entry_size = offset_table[j] - offset_table[i];
entries_[i].resize_no_init(entry_size);
if (fp.FRead(&entries_[i][0], 1, entry_size) != entry_size) return false;
if (!fp.DeSerialize(&entries_[i][0], entry_size)) return false;
}
}
if (entries_[TESSDATA_VERSION].empty()) {
Expand Down Expand Up @@ -135,11 +133,11 @@ void TessdataManager::Serialize(GenericVector<char> *data) const {
int32_t num_entries = TESSDATA_NUM_ENTRIES;
TFile fp;
fp.OpenWrite(data);
fp.FWrite(&num_entries, sizeof(num_entries), 1);
fp.FWrite(offset_table, sizeof(offset_table), 1);
fp.Serialize(&num_entries);
fp.Serialize(&offset_table[0], countof(offset_table));
for (int i = 0; i < TESSDATA_NUM_ENTRIES; ++i) {
if (!entries_[i].empty()) {
fp.FWrite(&entries_[i][0], entries_[i].size(), 1);
fp.Serialize(&entries_[i][0], entries_[i].size());
}
}
}
Expand Down

0 comments on commit 88b3d94

Please sign in to comment.