summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2013-01-24 22:24:44 -0500
committerNoel Power <noel.power@suse.com>2013-01-25 10:32:42 +0000
commitdceedfdc720c70e8a02542a534d2243a1f66da28 (patch)
tree3239c25157af96c2b7f9743b2abc20f30ec2b18f /chart2
parentfd96008b90c024c6e4c3a251440a7878629bbc17 (diff)
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 Reviewed-on: https://gerrit.libreoffice.org/1858 Reviewed-by: Noel Power <noel.power@suse.com> Tested-by: Noel Power <noel.power@suse.com>
Diffstat (limited to 'chart2')
-rw-r--r--chart2/source/model/filter/XMLFilter.cxx40
1 files changed, 19 insertions, 21 deletions
diff --git a/chart2/source/model/filter/XMLFilter.cxx b/chart2/source/model/filter/XMLFilter.cxx
index 10a565a7338e..75692c41e0c0 100644
--- a/chart2/source/model/filter/XMLFilter.cxx
+++ b/chart2/source/model/filter/XMLFilter.cxx
@@ -631,28 +631,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())