Kaydet (Commit) 184f6dd6 authored tarafından Caolán McNamara's avatar Caolán McNamara

ofz: ensure aCoordList has required elements

Change-Id: I6687f7e499907f2f44ade2b05b35e40570dabc6b
Reviewed-on: https://gerrit.libreoffice.org/45389Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst c421ac3f
...@@ -337,7 +337,8 @@ void ConversionHelper::decodeVmlPath( ::std::vector< ::std::vector< Point > >& r ...@@ -337,7 +337,8 @@ void ConversionHelper::decodeVmlPath( ::std::vector< ::std::vector< Point > >& r
{ {
switch ( state ) switch ( state )
{ {
case MOVE_REL: // 2* params -> param count reset case MOVE_REL:
aCoordList.resize(2, 0); // 2* params -> param count reset
if ( rPointLists.size() > 0 && rPointLists.back().size() > 0 ) if ( rPointLists.size() > 0 && rPointLists.back().size() > 0 )
{ {
rPointLists.emplace_back( ); rPointLists.emplace_back( );
...@@ -349,18 +350,20 @@ void ConversionHelper::decodeVmlPath( ::std::vector< ::std::vector< Point > >& r ...@@ -349,18 +350,20 @@ void ConversionHelper::decodeVmlPath( ::std::vector< ::std::vector< Point > >& r
nParamCount = 2; nParamCount = 2;
break; break;
case MOVE_ABS: // 2 params -> no param count reset case MOVE_ABS:
aCoordList.resize(2, 0); // 2 params -> no param count reset
if ( rPointLists.size() > 0 && rPointLists.back().size() > 0 ) if ( rPointLists.size() > 0 && rPointLists.back().size() > 0 )
{ {
rPointLists.emplace_back( ); rPointLists.emplace_back( );
rFlagLists.emplace_back( ); rFlagLists.emplace_back( );
} }
rPointLists.back().emplace_back( (aCoordList[ 0 ]), (aCoordList.size() > 1 ? aCoordList[ 1 ] : 0) ); rPointLists.back().emplace_back( (aCoordList[ 0 ]), aCoordList[ 1 ] );
rFlagLists.back().push_back( PolygonFlags_NORMAL ); rFlagLists.back().push_back( PolygonFlags_NORMAL );
aCurrentPoint = rPointLists.back().back(); aCurrentPoint = rPointLists.back().back();
break; break;
case BEZIER_REL: // 6* params -> param count reset case BEZIER_REL:
aCoordList.resize(6, 0); // 6* params -> param count reset
rPointLists.back().emplace_back( aCurrentPoint.X + aCoordList[ 0 ], rPointLists.back().emplace_back( aCurrentPoint.X + aCoordList[ 0 ],
aCurrentPoint.Y + aCoordList[ 1 ] ); aCurrentPoint.Y + aCoordList[ 1 ] );
rPointLists.back().emplace_back( aCurrentPoint.X + aCoordList[ 2 ], rPointLists.back().emplace_back( aCurrentPoint.X + aCoordList[ 2 ],
...@@ -374,7 +377,8 @@ void ConversionHelper::decodeVmlPath( ::std::vector< ::std::vector< Point > >& r ...@@ -374,7 +377,8 @@ void ConversionHelper::decodeVmlPath( ::std::vector< ::std::vector< Point > >& r
nParamCount = 6; nParamCount = 6;
break; break;
case BEZIER_ABS: // 6* params -> param count reset case BEZIER_ABS:
aCoordList.resize(6, 0); // 6* params -> param count reset
rPointLists.back().emplace_back( aCoordList[ 0 ], aCoordList[ 1 ] ); rPointLists.back().emplace_back( aCoordList[ 0 ], aCoordList[ 1 ] );
rPointLists.back().emplace_back( aCoordList[ 2 ], aCoordList[ 3 ] ); rPointLists.back().emplace_back( aCoordList[ 2 ], aCoordList[ 3 ] );
rPointLists.back().emplace_back( aCoordList[ 4 ], aCoordList[ 5 ] ); rPointLists.back().emplace_back( aCoordList[ 4 ], aCoordList[ 5 ] );
...@@ -385,7 +389,8 @@ void ConversionHelper::decodeVmlPath( ::std::vector< ::std::vector< Point > >& r ...@@ -385,7 +389,8 @@ void ConversionHelper::decodeVmlPath( ::std::vector< ::std::vector< Point > >& r
nParamCount = 6; nParamCount = 6;
break; break;
case LINE_REL: // 2* params -> param count reset case LINE_REL:
aCoordList.resize(2, 0); // 2* params -> param count reset
rPointLists.back().emplace_back( aCurrentPoint.X + aCoordList[ 0 ], rPointLists.back().emplace_back( aCurrentPoint.X + aCoordList[ 0 ],
aCurrentPoint.Y + aCoordList[ 1 ] ); aCurrentPoint.Y + aCoordList[ 1 ] );
rFlagLists.back().push_back( PolygonFlags_NORMAL ); rFlagLists.back().push_back( PolygonFlags_NORMAL );
...@@ -393,7 +398,8 @@ void ConversionHelper::decodeVmlPath( ::std::vector< ::std::vector< Point > >& r ...@@ -393,7 +398,8 @@ void ConversionHelper::decodeVmlPath( ::std::vector< ::std::vector< Point > >& r
nParamCount = 2; nParamCount = 2;
break; break;
case LINE_ABS: // 2* params -> param count reset case LINE_ABS:
aCoordList.resize(2, 0); // 2* params -> param count reset
rPointLists.back().emplace_back( aCoordList[ 0 ], (aCoordList.size() > 1 ? aCoordList[ 1 ] : 0) ); rPointLists.back().emplace_back( aCoordList[ 0 ], (aCoordList.size() > 1 ? aCoordList[ 1 ] : 0) );
rFlagLists.back().push_back( PolygonFlags_NORMAL ); rFlagLists.back().push_back( PolygonFlags_NORMAL );
aCurrentPoint = rPointLists.back().back(); aCurrentPoint = rPointLists.back().back();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment