chart2/source/model/filter/XMLFilter.cxx |   40 ++++++++++++++-----------------
 1 file changed, 19 insertions(+), 21 deletions(-)

New commits:
commit 4153bcbc8e568e8e33c56bab68e9ea036c5dce5b
Author: Kohei Yoshida <kohei.yosh...@gmail.com>
Date:   Thu Jan 24 22:24:44 2013 -0500

    bnc#798271: Don't delete the PropertyMapEntry instance prematurely.
    
    When using comphelper::PropertyMapEntry array to create a UNO property
    set, we need to make sure we keep this instance while the property set
    object is alive, else it would cause a very hard-to-debug problem down
    the road...
    
    In this particular case, the aExportInfoMap array instance was destroyed
    when it went out of scope, but the xInfoSet which references it was used
    afterward.
    
    Change-Id: I02132b6b2e6bef7b461f0f77c2c4a3e911e42014

diff --git a/chart2/source/model/filter/XMLFilter.cxx 
b/chart2/source/model/filter/XMLFilter.cxx
index 2a6e35b..551e9b2 100644
--- a/chart2/source/model/filter/XMLFilter.cxx
+++ b/chart2/source/model/filter/XMLFilter.cxx
@@ -644,28 +644,26 @@ sal_Int32 XMLFilter::impl_Export(
             xServiceFactory->createInstanceWithArguments(
                 C2U("com.sun.star.comp.Svx.GraphicExportHelper"), 
aGraphicResolverArgs ), uno::UNO_QUERY );
 
-        uno::Reference< beans::XPropertySet > xInfoSet;
+        // property map for export info set
+        comphelper::PropertyMapEntry aExportInfoMap[] =
         {
-            // property map for export info set
-            comphelper::PropertyMapEntry aExportInfoMap[] =
-            {
-                { MAP_LEN("UsePrettyPrinting"), 0, &::getBooleanCppuType(), 
beans::PropertyAttribute::MAYBEVOID, 0},
-                { MAP_LEN("BaseURI"), 0, &::getCppuType( (OUString *)0 ), 
beans::PropertyAttribute::MAYBEVOID, 0 },
-                { MAP_LEN("StreamRelPath"), 0, &::getCppuType( (OUString *)0 
), beans::PropertyAttribute::MAYBEVOID, 0 },
-                { MAP_LEN("StreamName"), 0, &::getCppuType( (OUString *)0 ), 
beans::PropertyAttribute::MAYBEVOID, 0 },
-                { MAP_LEN("ExportTableNumberList"), 0, 
&::getBooleanCppuType(), beans::PropertyAttribute::MAYBEVOID, 0 },
-                { NULL, 0, 0, NULL, 0, 0 }
-            };
-
-            xInfoSet = comphelper::GenericPropertySet_CreateInstance( new 
comphelper::PropertySetInfo( aExportInfoMap ) );
-
-            SvtSaveOptions aSaveOpt;
-            OUString 
sUsePrettyPrinting(RTL_CONSTASCII_USTRINGPARAM("UsePrettyPrinting"));
-            sal_Bool bUsePrettyPrinting( aSaveOpt.IsPrettyPrinting() );
-            xInfoSet->setPropertyValue( sUsePrettyPrinting, uno::makeAny( 
bUsePrettyPrinting ) );
-            if( ! bOasis )
-                xInfoSet->setPropertyValue( C2U("ExportTableNumberList"), 
uno::makeAny( true ));
-        }
+            { MAP_LEN("UsePrettyPrinting"), 0, &::getBooleanCppuType(), 
beans::PropertyAttribute::MAYBEVOID, 0},
+            { MAP_LEN("BaseURI"), 0, &::getCppuType( (OUString *)0 ), 
beans::PropertyAttribute::MAYBEVOID, 0 },
+            { MAP_LEN("StreamRelPath"), 0, &::getCppuType( (OUString *)0 ), 
beans::PropertyAttribute::MAYBEVOID, 0 },
+            { MAP_LEN("StreamName"), 0, &::getCppuType( (OUString *)0 ), 
beans::PropertyAttribute::MAYBEVOID, 0 },
+            { MAP_LEN("ExportTableNumberList"), 0, &::getBooleanCppuType(), 
beans::PropertyAttribute::MAYBEVOID, 0 },
+            { NULL, 0, 0, NULL, 0, 0 }
+        };
+
+        uno::Reference< beans::XPropertySet > xInfoSet =
+            comphelper::GenericPropertySet_CreateInstance( new 
comphelper::PropertySetInfo( aExportInfoMap ) );
+
+        SvtSaveOptions aSaveOpt;
+        OUString 
sUsePrettyPrinting(RTL_CONSTASCII_USTRINGPARAM("UsePrettyPrinting"));
+        sal_Bool bUsePrettyPrinting( aSaveOpt.IsPrettyPrinting() );
+        xInfoSet->setPropertyValue( sUsePrettyPrinting, uno::makeAny( 
bUsePrettyPrinting ) );
+        if( ! bOasis )
+            xInfoSet->setPropertyValue( C2U("ExportTableNumberList"), 
uno::makeAny( true ));
 
         sal_Int32 nArgs = 2;
         if( xGraphicObjectResolver.is())
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to