[Libreoffice-commits] core.git: 2 commits - external/nss sw/qa writerfilter/source

Michael Stahl mstahl at redhat.com
Wed Jul 16 02:21:03 PDT 2014


 external/nss/README                            |   16 +++++++++
 sw/qa/core/data/rtf/pass/fdo80924.rtf          |   43 +++++++++++++++++++++++++
 writerfilter/source/rtftok/rtfdocumentimpl.cxx |   14 +++-----
 writerfilter/source/rtftok/rtfdocumentimpl.hxx |    3 +
 writerfilter/source/rtftok/rtfsdrimport.cxx    |   17 ++++++++-
 5 files changed, 81 insertions(+), 12 deletions(-)

New commits:
commit 083b2b1471fff9e75f4b27a8769f95b8a0ebf5a1
Author: Michael Stahl <mstahl at redhat.com>
Date:   Tue Jul 15 23:36:51 2014 +0200

    fdo#80924: writerfilter: RTF import: fix shapeType PictureFrame import
    
    For shapeType PictureFrame, a default CustomShape was created and then
    RTFDocumentImpl::resolvePict() crashes because it actually operates on a
    previous shape, because in this special case RTFSdrImport::m_xShape
    is never actually set to the new shape, so contains the previous one.
    
    Also the new shape needs to be added to the draw-page, at least
    otherwise the assertion of the supported service fails because
    some SvxShape::mpObj weak-reference is dead?
    
    This essentially reverts commit 3cab1adf19d553663685e8198f0ec3f258a37c36
    (except for the added testcase, which was slightly different because
    it did not have a "pib" property).
    
    (regression from ba9b63d8101197d3fd8612193b1ca188271dfc1a)
    
    Change-Id: I6539c4286850dff2d8564006487cc765f1d117be

diff --git a/sw/qa/core/data/rtf/pass/fdo80924.rtf b/sw/qa/core/data/rtf/pass/fdo80924.rtf
new file mode 100644
index 0000000..cbaeb44
--- /dev/null
+++ b/sw/qa/core/data/rtf/pass/fdo80924.rtf
@@ -0,0 +1,43 @@
+{\rtf1\ansi\ansicpg1252\uc1
+{\*\generator Microsoft Word 11.0.5604;}
+{\info{\author Crystal Reports}{\doccomm Powered By Crystal}}
+\pard\plain {
+\lang1024\langfe1024\noproof\insrsid10428813
+{\shp{\*\shpinst\shpleft306\shptop16065\shpright11251\shpbottom16065\shpfhdr0\shpbxpage\shpbxignore\shpbypage\shpbyignore\shpwr3\shpwrk0\shpfblwtxt1\shpz1\shplid1026
+{\sp{\sn shapeType}{\sv 20}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn lineWidth}{\sv 12700}}{\sp{\sn fLine}{\sv 1}}{\sp{\sn posrelh}{\sv 1}}{\sp{\sn posrelv}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 0}}{\sp{\sn fBehindDocument}{\sv 1}}
+{\sp{\sn fLayoutInCell}{\sv 0}}}}
+}
+\pard
+{\shp{\*\shpinst\shpleft4920\shptop850\shpright6264\shpbottom1858\shpfhdr0\shpbxpage\shpbxignore\shpbypage\shpbyignore\shpwr3\shpwrk0\shpfblwtxt1\shpz2\shplid1027{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}
+{\sp{\sn pib}{\sv {\pict\picscalex30\picscaley30\piccropl0\piccropr0\piccropt0\piccropb0\picw7939\pich5953\picwgoal4501\pichgoal3375
+\jpegblip
+ffd8ffe000104a46494600010101004800480000ffe101604578696600004d4d002a000000080009010e00020000000100000000010f0002000000060000007a
+011000020000001500000080011200030000000100010000011a00050000000100000096011b0005000000010000009e01280003000000010002000001310002
+0000000c000000a68769000400000001000000b20000000043616e6f6e0043616e6f6e20506f77657253686f7420413531300000000000480000000100000048
+0000000147494d5020322e362e3131000009829a00050000000100000124829d0005000000010000012c88270003000000010000000090000007000000043032
+3130900300020000001400000134920a00050000000100000148928600070000000800000150a00000070000000430313030a001000300000001ffff00000000
+00000051eb85ffffffff0000000400000001323031313a30363a31322031393a32363a3436000000001000000001554e49434f444500ffdb0043000806060706
+05080707070909080a0c140d0c0b0b0c1912130f141d1a1f1e1d1a1c1c20242e2720222c231c1c2837292c30313434341f27393d38323c2e333432ffdb004301
+0909090c0b0c180d0d1832211c213232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232
+ffc0001108003c004003012200021101031101ffc4001a000002030101000000000000000000000004050203060100ffc4003210000201030302050302050500
+000000000102030004110512213151132241617106143242911523a1c1e17281b1d1f0ffc400190101010101010100000000000000000000010200030405ffc4
+001d110002020203010000000000000000000000010211213103225141ffda000c03010002110311003f007e1df6912a2c9e8372f27fdc509731bc571f731065
+8b1b668f180bcf0c3e3d7da99c6ca3cf24783ed5cbd1b6d8c91287232319ea3b7c57cc3d82cbdd5adecf62c9b9e50be6551d3e6975d7d49163f976ec47405985
+461fa6defa797c49e73264332a614007b64e71e993da8a6fa26d9b02459ca8f533e7fe055df1ad93d9e81edbea8831992270c060ed20d7351d76316ea6c9f6cb
+2379ba7007b50b7bf467dabaf812c881f254b9ca8f63eb54e816da6dd4d2e9978a535589cf926fc5d7b2907b7355d2ad076d0136b5746e15da77dcbd8fbf6ada
+0769144858052a0e3b8a51aae876a34b98ac31c4f1a92194739a274f995b4cb7594296f0c0233d7ff62a66d35686298dadc1958a89627e7aa9dbd7d0a9fed5c9
+199565555c323608cf0738ff001553b9824dc5778f6f37a54cb89e4dfbcf9941f4c71dea1942c86ff1acc9340764817c2970bc9c72323f7a7aba84aea4e0678e
+0f18acb5bec3acdeba070e1b1c0e09029c2baf86482aa71fa813fd3d6a65156298d3ee5a67db22a6d230ca4fe5599fa8fe985bb432443c2b98fcd6f32b727d42
+934c22994b30cb021b9214f1c7bfad1e2fa27b6922b91cc433b80f6c8c0ef5a2dc5e0cf3b10e8badaeb7612595f0116ab0a14911b8f1401f97cf7ab6cadd52d8
+44e780be50f80323af3e99a5b7f6f8d5edb53b3c7de6e2bb0ae04a30723fd445398d0f86889e424701b079aa963408b2662a049092c18ed200cd4236731c4f9c
+7246339aba1b83185049f7e7d4f7cd0f730cd736720b6f0dd8e498d9f6ab8edd29fa0cc83eb725bdd4a2d88f348497c641f807a579b59bb698399873fa71c0cf
+b502da16b0d3304b275009e0b00073e849a99d175a4600d8bf27960ca40f9e6bbd44e76c3df57ba38669cee1ea3028cd2f5dbcbabb4b090f8aae0e18e015e339
+f7ff00349a6d1355455678939e021917767f7a23e9bb37fe2c65b872823181b39e4fa1ed44a31a14dd9a2d4d360b62ea1b1386ebedd28a376890659d843fa8c9
+d71ff79a13584630c1b18bb8940c28f53d28a8bc4306638f3819219871f39e95c19d11631324061207dc6762b95cec61dc0f71fd69969f0d9ff0f8e2ba01655d
+d9c291ce4f208e71cd7a3b48597c464cbb1de5ba1cf1daaefb189433465e321b8d871d41a993148b25d26d76f98b0e47490f3f3533a4da642a028e0648ce78a5
+1717973671954999f613867e49c9c609edc554faadda40ec24e9818f91454bd3606efa05a4cd993c49075db9c0c8f8aea68f681b7a0973c91e62c47ef40a5ecc
+d023b90c73b79cf4aaef6e678d86d95c33851bb3c8cf6f4a5a97a6c1ed6ece3b7804b02ac9b86c1c12d93c8c01d7a1a147871a239dc84f250b647b64d4e79a53
+0c71072a646c175fc8704e476e959db6bdb892cd54c9b40214ed00646ec7f7aa8a6d03747fffd9
+}}}{\sp{\sn posrelh}{\sv 1}}{\sp{\sn posrelv}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 0}}
+{\sp{\sn fBehindDocument}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 0}}}}
+\par }
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 7d71537..14bc7fd 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -695,7 +695,8 @@ void RTFDocumentImpl::resolve(Stream& rMapper)
     }
 }
 
-int RTFDocumentImpl::resolvePict(bool bInline)
+int RTFDocumentImpl::resolvePict(bool const bInline,
+        uno::Reference<drawing::XShape> const& i_xShape)
 {
     SvMemoryStream aStream;
     SvStream* pStream = 0;
@@ -768,16 +769,13 @@ int RTFDocumentImpl::resolvePict(bool bInline)
     }
 
     // Wrap it in an XShape.
-    uno::Reference<drawing::XShape> xShape;
-    xShape = m_pSdrImport->getCurrentShape();
+    uno::Reference<drawing::XShape> xShape(i_xShape);
     if (xShape.is())
     {
         uno::Reference<lang::XServiceInfo> xSI(xShape, uno::UNO_QUERY_THROW);
-        if (!xSI->supportsService("com.sun.star.drawing.GraphicObjectShape"))
-            xShape.clear();
+        assert(xSI->supportsService("com.sun.star.drawing.GraphicObjectShape"));
     }
-
-    if (!xShape.is())
+    else
     {
         if (m_xModelFactory.is())
             xShape.set(m_xModelFactory->createInstance("com.sun.star.drawing.GraphicObjectShape"), uno::UNO_QUERY);
@@ -4905,7 +4903,7 @@ int RTFDocumentImpl::popState()
         Mapper().props(lcl_getBookmarkProperties(m_aBookmarks[m_aStates.top().aDestinationText.makeStringAndClear()]));
         break;
     case DESTINATION_PICT:
-        resolvePict(true);
+        resolvePict(true, m_pSdrImport->getCurrentShape());
         break;
     case DESTINATION_FORMFIELDNAME:
     {
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
index eba6ef5..e07f09a 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
@@ -363,7 +363,8 @@ public:
     bool isInBackground();
     void setDestinationText(OUString& rString);
     /// Resolve a picture: If not inline, then anchored.
-    int resolvePict(bool bInline);
+    int resolvePict(bool bInline,
+            css::uno::Reference<css::drawing::XShape> const& xShape);
 
     /// If this is the first run of the document, starts the initial paragraph.
     void checkFirstRun();
diff --git a/writerfilter/source/rtftok/rtfsdrimport.cxx b/writerfilter/source/rtftok/rtfsdrimport.cxx
index 59fa698..5cec44a 100644
--- a/writerfilter/source/rtftok/rtfsdrimport.cxx
+++ b/writerfilter/source/rtftok/rtfsdrimport.cxx
@@ -271,6 +271,9 @@ void RTFSdrImport::resolve(RTFShape& rShape, bool bClose, ShapeOrPict const shap
             nType = i->second.toInt32();
             switch (nType)
             {
+            case ESCHER_ShpInst_PictureFrame:
+                createShape("com.sun.star.drawing.GraphicObjectShape", xShape, xPropertySet);
+                break;
             case ESCHER_ShpInst_Line:
                 createShape("com.sun.star.drawing.LineShape", xShape, xPropertySet);
                 break;
@@ -654,15 +657,23 @@ void RTFSdrImport::resolve(RTFShape& rShape, bool bClose, ShapeOrPict const shap
             xPropertySet->setPropertyValue("TextWritingMode", uno::makeAny(eWritingMode));
     }
 
+    if (m_aParents.size() && m_aParents.top().is() && !m_bTextFrame)
+        m_aParents.top()->add(xShape);
+
     if (nType == ESCHER_ShpInst_PictureFrame) // picture frame
     {
+        assert(!m_bTextFrame);
         if (bPib)
-            m_rImport.resolvePict(false);
+        {
+            m_rImport.resolvePict(false, xShape);
+        }
+        else // ??? not sure if the early return should be removed on else?
+        {
+            m_xShape = xShape; // store it for later resolvePict call
+        }
         return;
     }
 
-    if (m_aParents.size() && m_aParents.top().is() && !m_bTextFrame)
-        m_aParents.top()->add(xShape);
     if (bCustom && xShape.is())
     {
         uno::Reference<drawing::XEnhancedCustomShapeDefaulter> xDefaulter(xShape, uno::UNO_QUERY);
commit 008b98f928a04d862a6320b51b367d1b913b55c6
Author: Michael Stahl <mstahl at redhat.com>
Date:   Tue Jul 15 23:13:12 2014 +0200

    nss: document why --with-system-nss can't be used in generic builds
    
    Change-Id: I93ce16b4dd059ca0ed79975cfb6373dd629f29a9

diff --git a/external/nss/README b/external/nss/README
index a6392fe..89498a7 100644
--- a/external/nss/README
+++ b/external/nss/README
@@ -75,3 +75,19 @@ sqlite. Therefore we deliver it into lib/sqlite on unix systems.
 
 See also issue:
 [https://issues.apache.org/ooo/show_bug.cgi?id=106132]
+
+== system NSS on Linux ==
+
+Note that different Linux distributions use different SONAMEs for the
+NSS libraries, so it is not possible to use --with-system-nss and build
+a portable generic LO installation set, despite NSS upstream apparently
+maintaining ABI compatibility.
+
+Debian Squeeze:
+0x000000000000000e (SONAME)             Library soname: [libnss3.so.1d]
+Fedora 20:
+0x000000000000000e (SONAME)             Library soname: [libnss3.so]
+
+For the record, the LSB specified SONAME is libnss3.so
+http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/libnss3.html
+


More information about the Libreoffice-commits mailing list