Length numberOfCharacters )
{
Vector<Character>& modelText = mImpl->mText;
- modelText.Resize( numberOfCharacters );
- memcpy( modelText.Begin(), text, numberOfCharacters * sizeof( Character ) );
+
+ if( 0u == numberOfCharacters )
+ {
+ modelText.Clear();
+ }
+ else
+ {
+ modelText.Resize( numberOfCharacters );
+ memcpy( modelText.Begin(), text, numberOfCharacters * sizeof( Character ) );
+ }
}
Length LogicalModel::GetNumberOfCharacters() const
Length numberOfRuns )
{
Vector<ScriptRun>& scriptRuns = mImpl->mScriptRuns;
- scriptRuns.Resize( numberOfRuns );
- memcpy( scriptRuns.Begin(), scripts, numberOfRuns * sizeof( ScriptRun ) );
+
+ if( 0u == numberOfRuns )
+ {
+ scriptRuns.Clear();
+ }
+ else
+ {
+ scriptRuns.Resize( numberOfRuns );
+ memcpy( scriptRuns.Begin(), scripts, numberOfRuns * sizeof( ScriptRun ) );
+ }
}
Length LogicalModel::GetNumberOfScriptRuns( CharacterIndex characterIndex,
Length numberOfRuns )
{
Vector<FontRun>& fontRuns = mImpl->mFontRuns;
- fontRuns.Resize( numberOfRuns );
- memcpy( fontRuns.Begin(), fonts, numberOfRuns * sizeof( FontRun ) );
+
+ if( 0u == numberOfRuns )
+ {
+ fontRuns.Clear();
+ }
+ else
+ {
+ fontRuns.Resize( numberOfRuns );
+ memcpy( fontRuns.Begin(), fonts, numberOfRuns * sizeof( FontRun ) );
+ }
}
Length LogicalModel::GetNumberOfFontRuns( CharacterIndex characterIndex,
Length length )
{
Vector<LineBreakInfo>& modelLineBreakInfo = mImpl->mLineBreakInfo;
- modelLineBreakInfo.Resize( length );
- memcpy( modelLineBreakInfo.Begin(), lineBreakInfo, length * sizeof( LineBreakInfo ) );
+
+ if( 0u == length )
+ {
+ modelLineBreakInfo.Clear();
+ }
+ else
+ {
+ modelLineBreakInfo.Resize( length );
+ memcpy( modelLineBreakInfo.Begin(), lineBreakInfo, length * sizeof( LineBreakInfo ) );
+ }
}
void LogicalModel::GetLineBreakInfo( LineBreakInfo* lineBreakInfo,
Length length )
{
Vector<WordBreakInfo>& modelWordBreakInfo = mImpl->mWordBreakInfo;
- modelWordBreakInfo.Resize( length );
- memcpy( modelWordBreakInfo.Begin(), wordBreakInfo, length * sizeof( WordBreakInfo ) );
+
+ if( 0u == length )
+ {
+ modelWordBreakInfo.Clear();
+ }
+ else
+ {
+ modelWordBreakInfo.Resize( length );
+ memcpy( modelWordBreakInfo.Begin(), wordBreakInfo, length * sizeof( WordBreakInfo ) );
+ }
}
void LogicalModel::GetWordBreakInfo( WordBreakInfo* wordBreakInfo,