[Libreoffice-commits] core.git: oox/source sw/qa

Miklos Vajna vmiklos at collabora.co.uk
Tue Jan 14 09:31:54 PST 2014


 oox/source/vml/vmlformatting.cxx         |    4 ++--
 sw/qa/core/data/ooxml/pass/vml-path.docx |binary
 2 files changed, 2 insertions(+), 2 deletions(-)

New commits:
commit d9d6c67c76e5b41e45330983a98f58ea288a30e9
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Jan 14 18:20:34 2014 +0100

    VML import: don't assume both parameters are available while parsing commands
    
    The problematic path was "m,l21600,r,21600l,21600xem at 1@0l at 3@2nfe", here
    "m,l" means an implicit "m0,0l", but only the first zero is in the
    coords list. If the second is missing, assume 0 as well.
    
    Change-Id: I03065e34c959103c9caf64271aa3ebbb7ad52726

diff --git a/oox/source/vml/vmlformatting.cxx b/oox/source/vml/vmlformatting.cxx
index 25caa60..c420451 100644
--- a/oox/source/vml/vmlformatting.cxx
+++ b/oox/source/vml/vmlformatting.cxx
@@ -332,7 +332,7 @@ void ConversionHelper::decodeVmlPath( ::std::vector< ::std::vector< Point > >& r
                         rPointLists.push_back( ::std::vector< Point >() );
                         rFlagLists.push_back( ::std::vector< PolygonFlags >() );
                     }
-                    rPointLists.back().push_back( Point( aCoordList[ 0 ], aCoordList[ 1 ] ) );
+                    rPointLists.back().push_back( Point( (aCoordList[ 0 ]), (aCoordList.size() > 1 ? aCoordList[ 1 ] : 0) ) );
                     rFlagLists.back().push_back( PolygonFlags_NORMAL );
                     aCurrentPoint = rPointLists.back().back();
                     break;
@@ -371,7 +371,7 @@ void ConversionHelper::decodeVmlPath( ::std::vector< ::std::vector< Point > >& r
                     break;
 
                 case LINE_ABS: // 2* params -> param count reset
-                    rPointLists.back().push_back( Point( aCoordList[ 0 ], aCoordList[ 1 ] ) );
+                    rPointLists.back().push_back( Point( aCoordList[ 0 ], (aCoordList.size() > 1 ? aCoordList[ 1 ] : 0) ) );
                     rFlagLists.back().push_back( PolygonFlags_NORMAL );
                     aCurrentPoint = rPointLists.back().back();
                     nParamCount = 2;
diff --git a/sw/qa/core/data/ooxml/pass/vml-path.docx b/sw/qa/core/data/ooxml/pass/vml-path.docx
new file mode 100755
index 0000000..6369783
Binary files /dev/null and b/sw/qa/core/data/ooxml/pass/vml-path.docx differ


More information about the Libreoffice-commits mailing list