chart2/source/model/filter/XMLFilter.cxx | 40 ++++++++++++++----------------- 1 file changed, 19 insertions(+), 21 deletions(-)
New commits: commit d46b2086f271d8cb8f3cc891363e7b4b128b6f55 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 c832d4a..603ea17 100644 --- a/chart2/source/model/filter/XMLFilter.cxx +++ b/chart2/source/model/filter/XMLFilter.cxx @@ -625,28 +625,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