This possibly avoids a crash on &bogus-entity input

git-svn-id: https://cld2.googlecode.com/svn/trunk@171 b252ecd4-b096-bf77-eb8e-91563289f87e
This commit is contained in:
dsites@google.com
2014-10-27 17:40:33 +00:00
parent 5f505ac67a
commit 54479ccc2c

View File

@@ -626,8 +626,10 @@ int ScriptScanner::SkipToFrontOfSpan(const char* src, int len, int* script) {
char temp[4]; char temp[4];
EntityToBuffer(src + skip, len - skip, EntityToBuffer(src + skip, len - skip,
temp, &tlen, &plen); temp, &tlen, &plen);
if (plen > 0) {
sc = GetUTF8LetterScriptNum(temp); sc = GetUTF8LetterScriptNum(temp);
} }
}
} else { } else {
// Update 1..4 bytes // Update 1..4 bytes
tlen = UTF8OneCharLen(src + skip); tlen = UTF8OneCharLen(src + skip);
@@ -877,8 +879,10 @@ bool ScriptScanner::GetOneScriptSpan(LangSpan* span) {
// Copy entity, no advance // Copy entity, no advance
EntityToBuffer(next_byte_ + take, byte_length_ - take, EntityToBuffer(next_byte_ + take, byte_length_ - take,
script_buffer_ + put, &tlen, &plen); script_buffer_ + put, &tlen, &plen);
if (plen > 0) {
sc = GetUTF8LetterScriptNum(script_buffer_ + put); sc = GetUTF8LetterScriptNum(script_buffer_ + put);
} }
}
} else { } else {
// Real letter, safely copy up to 4 bytes, increment by 1..4 // Real letter, safely copy up to 4 bytes, increment by 1..4
// Will update by 1..4 bytes at Advance, below // Will update by 1..4 bytes at Advance, below
@@ -973,8 +977,10 @@ bool ScriptScanner::GetOneScriptSpan(LangSpan* span) {
// Expand entity, no advance // Expand entity, no advance
EntityToBuffer(next_byte_ + take, byte_length_ - take, EntityToBuffer(next_byte_ + take, byte_length_ - take,
script_buffer_ + put, &tlen, &plen); script_buffer_ + put, &tlen, &plen);
if (plen > 0) {
sc = GetUTF8LetterScriptNum(script_buffer_ + put); sc = GetUTF8LetterScriptNum(script_buffer_ + put);
} }
}
} else { } else {
// Update 1..4 // Update 1..4
tlen = UTF8OneCharLen(next_byte_ + take); tlen = UTF8OneCharLen(next_byte_ + take);