am f9ce867d: Add boundary check for v4 bigram reading.
* commit 'f9ce867d805a8e102b26028831b75d5ed296838f': Add boundary check for v4 bigram reading.main
commit
f9d2c5c113
|
@ -23,9 +23,11 @@ namespace latinime {
|
||||||
const BigramEntry BigramDictContent::getBigramEntryAndAdvancePosition(
|
const BigramEntry BigramDictContent::getBigramEntryAndAdvancePosition(
|
||||||
int *const bigramEntryPos) const {
|
int *const bigramEntryPos) const {
|
||||||
const BufferWithExtendableBuffer *const bigramListBuffer = getContentBuffer();
|
const BufferWithExtendableBuffer *const bigramListBuffer = getContentBuffer();
|
||||||
if (*bigramEntryPos < 0 || *bigramEntryPos >= bigramListBuffer->getTailPosition()) {
|
const int bigramEntryTailPos = (*bigramEntryPos) + getBigramEntrySize();
|
||||||
AKLOGE("Invalid bigram entry position. bigramEntryPos: %d, bufSize: %d",
|
if (*bigramEntryPos < 0 || bigramEntryTailPos > bigramListBuffer->getTailPosition()) {
|
||||||
*bigramEntryPos, bigramListBuffer->getTailPosition());
|
AKLOGE("Invalid bigram entry position. bigramEntryPos: %d, bigramEntryTailPos: %d, "
|
||||||
|
"bufSize: %d", *bigramEntryPos, bigramEntryTailPos,
|
||||||
|
bigramListBuffer->getTailPosition());
|
||||||
ASSERT(false);
|
ASSERT(false);
|
||||||
return BigramEntry(false /* hasNext */, NOT_A_PROBABILITY,
|
return BigramEntry(false /* hasNext */, NOT_A_PROBABILITY,
|
||||||
Ver4DictConstants::NOT_A_TERMINAL_ID);
|
Ver4DictConstants::NOT_A_TERMINAL_ID);
|
||||||
|
|
|
@ -99,6 +99,20 @@ class BigramDictContent : public SparseTableDictContent {
|
||||||
return hasNext ? Ver4DictConstants::BIGRAM_HAS_NEXT_MASK : 0;
|
return hasNext ? Ver4DictConstants::BIGRAM_HAS_NEXT_MASK : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int getBigramEntrySize() const {
|
||||||
|
if (mHasHistoricalInfo) {
|
||||||
|
return Ver4DictConstants::BIGRAM_FLAGS_FIELD_SIZE
|
||||||
|
+ Ver4DictConstants::TIME_STAMP_FIELD_SIZE
|
||||||
|
+ Ver4DictConstants::WORD_LEVEL_FIELD_SIZE
|
||||||
|
+ Ver4DictConstants::WORD_COUNT_FIELD_SIZE
|
||||||
|
+ Ver4DictConstants::BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE;
|
||||||
|
} else {
|
||||||
|
return Ver4DictConstants::BIGRAM_FLAGS_FIELD_SIZE
|
||||||
|
+ Ver4DictConstants::PROBABILITY_SIZE
|
||||||
|
+ Ver4DictConstants::BIGRAM_TARGET_TERMINAL_ID_FIELD_SIZE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool runGCBigramList(const int bigramListPos,
|
bool runGCBigramList(const int bigramListPos,
|
||||||
const BigramDictContent *const sourceBigramDictContent, const int toPos,
|
const BigramDictContent *const sourceBigramDictContent, const int toPos,
|
||||||
const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
|
const TerminalPositionLookupTable::TerminalIdMap *const terminalIdMap,
|
||||||
|
|
Loading…
Reference in New Issue