[Libreoffice-commits] core.git: 6 commits - cui/source filter/source sw/source vcl/source
Stephan Bergmann
sbergman at redhat.com
Mon Nov 14 16:45:48 UTC 2016
cui/source/inc/cuitabarea.hxx | 2
cui/source/tabpages/tparea.cxx | 88 +++++++++---------
cui/source/tabpages/tpcolor.cxx | 2
filter/source/xsltdialog/xmlfiltercommon.hxx | 5 -
filter/source/xsltdialog/xmlfilterdialogcomponent.cxx | 23 ----
filter/source/xsltdialog/xmlfiltersettingsdialog.cxx | 37 +++++--
sw/source/ui/misc/pgfnote.cxx | 5 -
vcl/source/control/field.cxx | 4
8 files changed, 79 insertions(+), 87 deletions(-)
New commits:
commit b6ce0cd83afaab1bc03f7421745ff752c3459e99
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Mon Nov 14 17:40:33 2016 +0100
Avoid unnecessary, wrong downcast
...as reported by -fsanitize=vptr when doing "Format - Paragraph... - Area -
Color" in Writer:
> cui/source/tabpages/tpcolor.cxx:65:19: runtime error: downcast of address 0x6030009782b0 which does not point to an object of type 'XOutdevItemPool'
> 0x6030009782b0: note: object is of type 'SwAttrPool'
> 20 01 80 1c 50 e8 e9 85 4d 7f 00 00 e0 28 48 86 4d 7f 00 00 c0 d7 11 00 30 61 00 00 80 29 54 00
> ^~~~~~~~~~~~~~~~~~~~~~~
> vptr for 'SwAttrPool'
> #0 0x7f4b047cfd3a in SvxColorTabPage::SvxColorTabPage(vcl::Window*, SfxItemSet const&) cui/source/tabpages/tpcolor.cxx:65:19
> #1 0x7f4b0480ec04 in VclPtr<SvxColorTabPage> VclPtr<SvxColorTabPage>::Create<vcl::Window*&, SfxItemSet const&>(vcl::Window*&, SfxItemSet const&) include/vcl/vclptr.hxx:138:46
> #2 0x7f4b047f8567 in SvxColorTabPage::Create(vcl::Window*, SfxItemSet const*) cui/source/tabpages/tpcolor.cxx:326:12
> #3 0x7f4b0472132a in CreateFillStyleTabPage(unsigned short, vcl::Window*, SfxItemSet const&) cui/source/tabpages/tparea.cxx:319:42
> #4 0x7f4b0471ef8b in SvxAreaTabPage::SelectFillTypeHdl_Impl(Button*) cui/source/tabpages/tparea.cxx:330:41
> #5 0x7f4b047114b3 in SvxAreaTabPage::LinkStubSelectFillTypeHdl_Impl(void*, Button*) cui/source/tabpages/tparea.cxx:323:1
> #6 0x7f4df3eac737 in Link<Button*, void>::Call(Button*) const include/tools/link.hxx:84:45
> #7 0x7f4df3e93bb6 in Button::Click()::$_0::operator()() const vcl/source/control/button.cxx:127:85
Change-Id: I6259b100c535fa81b9f7452db84c22d5b10acb1e
diff --git a/cui/source/tabpages/tpcolor.cxx b/cui/source/tabpages/tpcolor.cxx
index 71a23a2..c31f57f 100644
--- a/cui/source/tabpages/tpcolor.cxx
+++ b/cui/source/tabpages/tpcolor.cxx
@@ -62,7 +62,7 @@ SvxColorTabPage::SvxColorTabPage(vcl::Window* pParent, const SfxItemSet& rInAttr
, pPos( nullptr )
, aXFStyleItem( drawing::FillStyle_SOLID )
, aXFillColorItem( OUString(), Color( COL_BLACK ) )
- , aXFillAttr( static_cast<XOutdevItemPool*>( rInAttrs.GetPool() ))
+ , aXFillAttr( rInAttrs.GetPool() )
, rXFSet( aXFillAttr.GetItemSet() )
, eCM( ColorModel::RGB )
, m_context(comphelper::getProcessComponentContext())
commit 8c12f8145388a586536b874359ad0bae37ffcc3b
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Mon Nov 14 13:57:15 2016 +0100
This RES_FRM_SIZE item is apparently SwFormatFrameSize, not SvxSizeItem
...as reported by -fsanitize=vptr when doing "Format - Page..." in Writer
(though both types have a Size member at the same location, so didn't cause any
real problems):
> sw/source/ui/misc/pgfnote.cxx:283:32: runtime error: downcast of address 0x604000e23f50 which does not point to an object of type 'const SvxSizeItem'
> 0x604000e23f50: note: object is of type 'SwFormatFrameSize'
> 94 01 00 3d 90 ae ee 90 ff 7e 00 00 06 00 00 00 58 00 00 be d0 2f 00 00 00 00 00 00 e0 3d 00 00
> ^~~~~~~~~~~~~~~~~~~~~~~
> vptr for 'SwFormatFrameSize'
> #0 0x7efd1c8d01e2 in SwFootNotePage::ActivatePage(SfxItemSet const&) sw/source/ui/misc/pgfnote.cxx:283:32
> #1 0x7efd1c8cbf07 in SwFootNotePage::Reset(SfxItemSet const*) sw/source/ui/misc/pgfnote.cxx:230:5
> #2 0x7f002e149560 in SfxTabDialog::ActivatePageHdl(TabControl*) sfx2/source/dialog/tabdlg.cxx:1117:19
> #3 0x7f002e1400e3 in SfxTabDialog::LinkStubActivatePageHdl(void*, TabControl*) sfx2/source/dialog/tabdlg.cxx:1035:1
> #4 0x7f0008248f37 in Link<TabControl*, void>::Call(TabControl*) const include/tools/link.hxx:84:45
> #5 0x7f0008204caa in TabControl::ActivatePage() vcl/source/control/tabctrl.cxx:1601:19
Change-Id: I73df2438565a7069153b22140197897df810b2aa
diff --git a/sw/source/ui/misc/pgfnote.cxx b/sw/source/ui/misc/pgfnote.cxx
index 691105f..44f6d03 100644
--- a/sw/source/ui/misc/pgfnote.cxx
+++ b/sw/source/ui/misc/pgfnote.cxx
@@ -18,6 +18,7 @@
*/
#include <cmdid.h>
+#include <fmtfsize.hxx>
#include <hintids.hxx>
#include <svx/dialmgr.hxx>
#include <svx/dialogs.hrc>
@@ -280,8 +281,8 @@ bool SwFootNotePage::FillItemSet(SfxItemSet *rSet)
void SwFootNotePage::ActivatePage(const SfxItemSet& rSet)
{
- const SvxSizeItem& rSize = static_cast<const SvxSizeItem&>(rSet.Get( RES_FRM_SIZE ));
- lMaxHeight = rSize.GetSize().Height();
+ auto const & rSize = static_cast<SwFormatFrameSize const &>(rSet.Get( RES_FRM_SIZE ));
+ lMaxHeight = rSize.GetHeight();
const SfxPoolItem* pItem;
if( SfxItemState::SET == rSet.GetItemState( rSet.GetPool()->GetWhich( SID_ATTR_PAGE_HEADERSET), false, &pItem ) )
commit f3f71b087d25966d39a4c883bbe0b60b27419119
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Nov 11 18:25:37 2016 +0100
Avoid -fsanitize=null
...during CppunitTest_filter_dialogs_test:
> filter/source/xsltdialog/xmlfiltersettingsdialog.cxx:1398:20: runtime error: reference binding to null pointer of type 'ResMgr'
> #0 0x7f144bf5ab10 in XMLFilterListBox::XMLFilterListBox(vcl::Window*, SvxPathControl*) filter/source/xsltdialog/xmlfiltersettingsdialog.cxx:1398:20
> #1 0x7f144bf7abb8 in VclPtr<XMLFilterListBox> VclPtr<XMLFilterListBox>::Create<VclPtr<VclVBox>&, SvxPathControl*>(VclPtr<VclVBox>&, SvxPathControl*&&) include/vcl/vclptr.hxx:138:46
> #2 0x7f144bf50df8 in SvxPathControl::SvxPathControl(vcl::Window*) filter/source/xsltdialog/xmlfiltersettingsdialog.cxx:1312:20
> #3 0x7f144bf7d487 in VclPtr<SvxPathControl> VclPtr<SvxPathControl>::Create<VclPtr<vcl::Window>&>(VclPtr<vcl::Window>&) include/vcl/vclptr.hxx:138:46
> #4 0x7f144bf56a2f in makeSvxPathControl filter/source/xsltdialog/xmlfiltersettingsdialog.cxx:1378:1
> #5 0x7f14d2060a04 in VclBuilder::makeObject(vcl::Window*, rtl::OString const&, rtl::OString const&, std::__debug::map<rtl::OString, rtl::OString, std::less<rtl::OString>, std::allocator<std::pair<rtl::OString const, rtl::OString> > >&) vcl/source/window/builder.cxx:1793:17
> #6 0x7f14d2078ddb in VclBuilder::insertObject(vcl::Window*, rtl::OString const&, rtl::OString const&, std::__debug::map<rtl::OString, rtl::OString, std::less<rtl::OString>, std::allocator<std::pair<rtl::OString const, rtl::OString> > >&, std::__debug::map<rtl::OString, rtl::OString, std::less<rtl::OString>, std::allocator<std::pair<rtl::OString const, rtl::OString> > >&, std::__debug::map<rtl::OString, rtl::OString, std::less<rtl::OString>, std::allocator<std::pair<rtl::OString const, rtl::OString> > >&) vcl/source/window/builder.cxx:1887:25
> #7 0x7f14d208790a in VclBuilder::handleObject(vcl::Window*, xmlreader::XmlReader&) vcl/source/window/builder.cxx:2856:37
> #8 0x7f14d20215bc in VclBuilder::handleChild(vcl::Window*, xmlreader::XmlReader&) vcl/source/window/builder.cxx:2114:33
> #9 0x7f14d2087bea in VclBuilder::handleObject(vcl::Window*, xmlreader::XmlReader&) vcl/source/window/builder.cxx:2859:17
> #10 0x7f14d20215bc in VclBuilder::handleChild(vcl::Window*, xmlreader::XmlReader&) vcl/source/window/builder.cxx:2114:33
> #11 0x7f14d2087bea in VclBuilder::handleObject(vcl::Window*, xmlreader::XmlReader&) vcl/source/window/builder.cxx:2859:17
> #12 0x7f14d20215bc in VclBuilder::handleChild(vcl::Window*, xmlreader::XmlReader&) vcl/source/window/builder.cxx:2114:33
> #13 0x7f14d200c59a in VclBuilder::VclBuilder(vcl::Window*, rtl::OUString const&, rtl::OUString const&, rtl::OString const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) vcl/source/window/builder.cxx:206:9
> #14 0x7f1492275862 in ScreenshotTest::dumpDialogToPath(rtl::OString const&) test/source/screenshot_test.cxx:177:24
The existing code apparently depended on any calls to getXSLTDialogResMgr in
xmlfiltersettingsdialog.cxx only happening after pXSLTResMgr had been set up in
the outer XMLFilterDialogComponent::execute in xmlfilterdialogcomponent.cxx.
That is not true when each dialog is opened independently in the screenshot
test, so instead just call CreateResMgr on demand wherever needed.
Change-Id: I9f6dc7c66d4999137352a8d91665b954f4088085
diff --git a/filter/source/xsltdialog/xmlfiltercommon.hxx b/filter/source/xsltdialog/xmlfiltercommon.hxx
index 952cd1e..2f65dde 100644
--- a/filter/source/xsltdialog/xmlfiltercommon.hxx
+++ b/filter/source/xsltdialog/xmlfiltercommon.hxx
@@ -84,11 +84,6 @@ extern std::vector< application_info_impl* >& getApplicationInfos();
extern OUString getApplicationUIName( const OUString& rServiceName );
extern const application_info_impl* getApplicationInfo( const OUString& rServiceName );
-extern ResMgr* getXSLTDialogResMgr();
-
-#define RESID(x) ResId(x, *getXSLTDialogResMgr())
-#define RESIDSTR(x) RESID(x).toString()
-
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx b/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx
index 2baa87a..7d4bb28 100644
--- a/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx
+++ b/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx
@@ -34,7 +34,6 @@
#include <com/sun/star/awt/XWindow.hpp>
#include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
-#include <tools/resmgr.hxx>
#include <vcl/svapp.hxx>
#include <vcl/settings.hxx>
#include <rtl/instance.hxx>
@@ -110,17 +109,6 @@ private:
VclPtr<XMLFilterSettingsDialog> mpDialog;
};
-
-namespace
-{
- static ResMgr* pXSLTResMgr = nullptr;
-}
-
-ResMgr* getXSLTDialogResMgr()
-{
- return pXSLTResMgr;
-}
-
XMLFilterDialogComponent::XMLFilterDialogComponent( const css::uno::Reference< XComponentContext >& rxContext ) :
OComponentHelper( maMutex ),
mxContext( rxContext ),
@@ -258,12 +246,6 @@ void SAL_CALL XMLFilterDialogComponent::disposing()
::SolarMutexGuard aGuard;
mpDialog.disposeAndClear();
-
- if (pXSLTResMgr)
- {
- delete pXSLTResMgr;
- pXSLTResMgr = nullptr;
- }
}
@@ -308,11 +290,6 @@ sal_Int16 SAL_CALL XMLFilterDialogComponent::execute( ) throw(RuntimeException,
{
::SolarMutexGuard aGuard;
- if( nullptr == pXSLTResMgr )
- {
- pXSLTResMgr = ResMgr::CreateResMgr( "xsltdlg", Application::GetSettings().GetUILanguageTag() );
- }
-
if( nullptr == mpDialog )
{
Reference< XComponent > xComp( this );
diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
index ff1fac9..02b30e9 100644
--- a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
+++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
@@ -24,6 +24,7 @@
#include <com/sun/star/beans/PropertyValue.hpp>
#include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
+#include <tools/resmgr.hxx>
#include <tools/urlobj.hxx>
#include <svtools/headbar.hxx>
#include <unotools/streamwrap.hxx>
@@ -31,6 +32,7 @@
#include <osl/file.hxx>
#include <o3tl/enumrange.hxx>
#include <vcl/msgbox.hxx>
+#include <vcl/svapp.hxx>
#include <vcl/builderfactory.hxx>
#include <sfx2/filedlghelper.hxx>
#include "svtools/treelistentry.hxx"
@@ -38,6 +40,7 @@
#include <rtl/uri.hxx>
#include <algorithm>
+#include <memory>
#include "xmlfilterdialogstrings.hrc"
#include "xmlfiltersettingsdialog.hxx"
@@ -56,6 +59,19 @@ using namespace com::sun::star::util;
using ::rtl::Uri;
+namespace {
+
+std::unique_ptr<ResMgr> getXSLTDialogResMgr() {
+ return std::unique_ptr<ResMgr>(
+ ResMgr::CreateResMgr(
+ "xsltdlg", Application::GetSettings().GetUILanguageTag()));
+}
+
+}
+
+#define RESID(x) ResId(x, *getXSLTDialogResMgr().get())
+#define RESIDSTR(x) RESID(x).toString()
+
XMLFilterSettingsDialog::XMLFilterSettingsDialog(vcl::Window* pParent,
const css::uno::Reference<css::uno::XComponentContext>& rxContext,
Dialog::InitFlag eFlag)
@@ -230,7 +246,7 @@ void XMLFilterSettingsDialog::onNew()
aTempInfo.maDocumentService = "com.sun.star.text.TextDocument";
// execute XML Filter Dialog
- ScopedVclPtrInstance< XMLFilterTabDialog > aDlg( this, *getXSLTDialogResMgr(), mxContext, &aTempInfo );
+ ScopedVclPtrInstance< XMLFilterTabDialog > aDlg( this, *getXSLTDialogResMgr().get(), mxContext, &aTempInfo );
if ( aDlg->Execute() == RET_OK )
{
// insert the new filter
@@ -249,7 +265,7 @@ void XMLFilterSettingsDialog::onEdit()
filter_info_impl* pOldInfo = static_cast<filter_info_impl*>(pEntry->GetUserData());
// execute XML Filter Dialog
- ScopedVclPtrInstance< XMLFilterTabDialog > aDlg( this, *getXSLTDialogResMgr(), mxContext, pOldInfo );
+ ScopedVclPtrInstance< XMLFilterTabDialog > aDlg( this, *getXSLTDialogResMgr().get(), mxContext, pOldInfo );
if ( aDlg->Execute() == RET_OK )
{
filter_info_impl* pNewInfo = aDlg->getNewFilterInfo();
@@ -1206,28 +1222,29 @@ std::vector< application_info_impl* >& getApplicationInfos()
if( aInfos.empty() )
{
- ResId aResId1( STR_APPL_NAME_WRITER, *getXSLTDialogResMgr() );
+ auto resmgr = getXSLTDialogResMgr();
+ ResId aResId1( STR_APPL_NAME_WRITER, *resmgr.get() );
aInfos.push_back( new application_info_impl(
"com.sun.star.text.TextDocument",
aResId1,
"com.sun.star.comp.Writer.XMLImporter",
"com.sun.star.comp.Writer.XMLExporter" ) );
- ResId aResId2( STR_APPL_NAME_CALC, *getXSLTDialogResMgr() );
+ ResId aResId2( STR_APPL_NAME_CALC, *resmgr.get() );
aInfos.push_back( new application_info_impl(
"com.sun.star.sheet.SpreadsheetDocument",
aResId2,
"com.sun.star.comp.Calc.XMLImporter",
"com.sun.star.comp.Calc.XMLExporter" ) );
- ResId aResId3( STR_APPL_NAME_IMPRESS, *getXSLTDialogResMgr() );
+ ResId aResId3( STR_APPL_NAME_IMPRESS, *resmgr.get() );
aInfos.push_back( new application_info_impl(
"com.sun.star.presentation.PresentationDocument",
aResId3,
"com.sun.star.comp.Impress.XMLImporter",
"com.sun.star.comp.Impress.XMLExporter" ) );
- ResId aResId4( STR_APPL_NAME_DRAW, *getXSLTDialogResMgr() );
+ ResId aResId4( STR_APPL_NAME_DRAW, *resmgr.get() );
aInfos.push_back( new application_info_impl(
"com.sun.star.drawing.DrawingDocument",
aResId4,
@@ -1235,28 +1252,28 @@ std::vector< application_info_impl* >& getApplicationInfos()
"com.sun.star.comp.Draw.XMLExporter" ) );
// --- oasis file formats...
- ResId aResId5( STR_APPL_NAME_OASIS_WRITER, *getXSLTDialogResMgr() );
+ ResId aResId5( STR_APPL_NAME_OASIS_WRITER, *resmgr.get() );
aInfos.push_back( new application_info_impl(
"com.sun.star.text.TextDocument",
aResId5,
"com.sun.star.comp.Writer.XMLOasisImporter",
"com.sun.star.comp.Writer.XMLOasisExporter" ) );
- ResId aResId6( STR_APPL_NAME_OASIS_CALC, *getXSLTDialogResMgr() );
+ ResId aResId6( STR_APPL_NAME_OASIS_CALC, *resmgr.get() );
aInfos.push_back( new application_info_impl(
"com.sun.star.sheet.SpreadsheetDocument",
aResId6,
"com.sun.star.comp.Calc.XMLOasisImporter",
"com.sun.star.comp.Calc.XMLOasisExporter" ) );
- ResId aResId7( STR_APPL_NAME_OASIS_IMPRESS, *getXSLTDialogResMgr() );
+ ResId aResId7( STR_APPL_NAME_OASIS_IMPRESS, *resmgr.get() );
aInfos.push_back( new application_info_impl(
"com.sun.star.presentation.PresentationDocument",
aResId7,
"com.sun.star.comp.Impress.XMLOasisImporter",
"com.sun.star.comp.Impress.XMLOasisExporter" ) );
- ResId aResId8( STR_APPL_NAME_OASIS_DRAW, *getXSLTDialogResMgr() );
+ ResId aResId8( STR_APPL_NAME_OASIS_DRAW, *resmgr.get() );
aInfos.push_back( new application_info_impl(
"com.sun.star.drawing.DrawingDocument",
aResId8,
commit c80ac2ba4a6486e6161e17f9118ba1563b7fc00e
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Nov 11 18:16:52 2016 +0100
Avoid -fsanitize=signed-integer-overflow
...when doing "Format - Page..." in Writer:
> vcl/source/control/field.cxx:621:20: runtime error: signed integer overflow: 9223372036854775807 * 100 cannot be represented in type 'long'
> #0 0x7f57787c4868 in NumericFormatter::Normalize(long) const vcl/source/control/field.cxx:621:20
> #1 0x7f578a4608dc in SetFieldUnit(MetricField&, FieldUnit, bool) svtools/source/misc/unitconv.cxx:75:32
> #2 0x7f5488952648 in SvxPageDescPage::SvxPageDescPage(vcl::Window*, SfxItemSet const&) cui/source/tabpages/page.cxx:275:5
> #3 0x7f54889c3ea4 in VclPtr<SvxPageDescPage> VclPtr<SvxPageDescPage>::Create<vcl::Window*&, SfxItemSet const&>(vcl::Window*&, SfxItemSet const&) include/vcl/vclptr.hxx:138:46
> #4 0x7f5488925d27 in SvxPageDescPage::Create(vcl::Window*, SfxItemSet const*) cui/source/tabpages/page.cxx:162:12
> #5 0x7f579ea86df4 in SfxTabDialog::ActivatePageHdl(TabControl*) sfx2/source/dialog/tabdlg.cxx:1085:24
> #6 0x7f579ea800e3 in SfxTabDialog::LinkStubActivatePageHdl(void*, TabControl*) sfx2/source/dialog/tabdlg.cxx:1035:1
> #7 0x7f5778b88f37 in Link<TabControl*, void>::Call(TabControl*) const include/tools/link.hxx:84:45
> #8 0x7f5778b44caa in TabControl::ActivatePage() vcl/source/control/tabctrl.cxx:1601:19
and NumericFormatter::mnMax is still SAL_MAX_INT64 (but will be set to a smaller
value a few lines futher down in the SvxPageDescPage ctor). So initialize mnMax
to a substantially smaller value (that is still "large", but avoids this kind of
overflow), and hope that no code relies on the exact initial value.
Change-Id: If3b4db1d20bc59418d1769e9690bc7ecdbf29a50
diff --git a/vcl/source/control/field.cxx b/vcl/source/control/field.cxx
index fe4d60c..ea91c0e 100644
--- a/vcl/source/control/field.cxx
+++ b/vcl/source/control/field.cxx
@@ -504,7 +504,9 @@ void NumericFormatter::ImplInit()
mnFieldValue = 0;
mnLastValue = 0;
mnMin = 0;
- mnMax = SAL_MAX_INT64;
+ mnMax = SAL_MAX_INT32;
+ // a "large" value substantially smaller than SAL_MAX_INT64, to avoid
+ // overflow in computations using this "dummy" value
mnDecimalDigits = 2;
mnType = FORMAT_NUMERIC;
mbThousandSep = true;
commit 2f0885bb364ba795cdda01a145dd88f1318b99b6
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Nov 11 18:10:42 2016 +0100
Avoid -fsanitize=null
...when doing "Format - Page..." in Writer (and eFillType is TRANSPARENT):
> cui/source/tabpages/tparea.cxx:331:33: runtime error: reference binding to null pointer of type 'SfxTabPage'
> #0 0x7f9f053e936f in SvxAreaTabPage::SelectFillTypeHdl_Impl(Button*) cui/source/tabpages/tparea.cxx:331:9
> #1 0x7f9f053e548c in SvxAreaTabPage::ActivatePage(SfxItemSet const&) cui/source/tabpages/tparea.cxx:157:13
> #2 0x7fa21be01676 in SfxTabDialog::ActivatePageHdl(TabControl*) sfx2/source/dialog/tabdlg.cxx:1126:19
> #3 0x7fa21bdf70e3 in SfxTabDialog::LinkStubActivatePageHdl(void*, TabControl*) sfx2/source/dialog/tabdlg.cxx:1035:1
> #4 0x7fa1f5efff37 in Link<TabControl*, void>::Call(TabControl*) const include/tools/link.hxx:84:45
> #5 0x7fa1f5ebbcaa in TabControl::ActivatePage() vcl/source/control/tabctrl.cxx:1601:19
Change-Id: I279f507038ab4bae1be4f02b6537e6d1aab76348
diff --git a/cui/source/inc/cuitabarea.hxx b/cui/source/inc/cuitabarea.hxx
index f58e6cd..dd941f8 100644
--- a/cui/source/inc/cuitabarea.hxx
+++ b/cui/source/inc/cuitabarea.hxx
@@ -302,7 +302,7 @@ public:
void SetPos( sal_uInt16 nInPos ) { m_nPos = nInPos; }
void SetAreaTP( bool* pIn ) { m_pbAreaTP = pIn; }
virtual void PageCreated(const SfxAllItemSet& aSet) override;
- void CreatePage(sal_Int32 nId, SfxTabPage& pTab);
+ void CreatePage(sal_Int32 nId, SfxTabPage* pTab);
void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; }
void SetGrdChgd( ChangeType* pIn ) { m_pnGradientListState = pIn; }
void SetHtchChgd( ChangeType* pIn ) { m_pnHatchingListState = pIn; }
diff --git a/cui/source/tabpages/tparea.cxx b/cui/source/tabpages/tparea.cxx
index b89ebae..fdbcfc9 100644
--- a/cui/source/tabpages/tparea.cxx
+++ b/cui/source/tabpages/tparea.cxx
@@ -334,7 +334,7 @@ IMPL_LINK(SvxAreaTabPage, SelectFillTypeHdl_Impl, Button*, pButton, void)
maBox.SelectButton(static_cast<PushButton*>(pButton));
FillType eFillType = static_cast<FillType>(maBox.GetCurrentButtonPos());
m_pFillTabPage.disposeAndReset( CreateFillStyleTabPage(eFillType, m_pFillTab, m_rXFSet) );
- CreatePage( eFillType , *m_pFillTabPage);
+ CreatePage( eFillType , m_pFillTabPage);
}
}
@@ -362,63 +362,63 @@ void SvxAreaTabPage::PointChanged( vcl::Window* , RectPoint )
{
}
-void SvxAreaTabPage::CreatePage( sal_Int32 nId, SfxTabPage& pTab )
+void SvxAreaTabPage::CreatePage( sal_Int32 nId, SfxTabPage* pTab )
{
if(nId == SOLID )
{
- static_cast<SvxColorTabPage&>(pTab).SetColorList( m_pColorList );
- static_cast<SvxColorTabPage&>(pTab).SetPos( &m_nPos );
- static_cast<SvxColorTabPage&>(pTab).SetColorChgd( m_pnColorListState );
- static_cast<SvxColorTabPage&>(pTab).Construct();
- static_cast<SvxColorTabPage&>(pTab).ActivatePage( m_rXFSet );
- static_cast<SvxColorTabPage&>(pTab).Reset(&m_rXFSet);
- static_cast<SvxColorTabPage&>(pTab).Show();
+ static_cast<SvxColorTabPage*>(pTab)->SetColorList( m_pColorList );
+ static_cast<SvxColorTabPage*>(pTab)->SetPos( &m_nPos );
+ static_cast<SvxColorTabPage*>(pTab)->SetColorChgd( m_pnColorListState );
+ static_cast<SvxColorTabPage*>(pTab)->Construct();
+ static_cast<SvxColorTabPage*>(pTab)->ActivatePage( m_rXFSet );
+ static_cast<SvxColorTabPage*>(pTab)->Reset(&m_rXFSet);
+ static_cast<SvxColorTabPage*>(pTab)->Show();
}
else if(nId == GRADIENT)
{
- static_cast<SvxGradientTabPage&>(pTab).SetColorList( m_pColorList );
- static_cast<SvxGradientTabPage&>(pTab).SetGradientList( m_pGradientList );
- static_cast<SvxGradientTabPage&>(pTab).SetPos( &m_nPos );
- static_cast<SvxGradientTabPage&>(pTab).SetGrdChgd( m_pnGradientListState );
- static_cast<SvxGradientTabPage&>(pTab).SetColorChgd( m_pnColorListState );
- static_cast<SvxGradientTabPage&>(pTab).Construct();
- static_cast<SvxGradientTabPage&>(pTab).ActivatePage( m_rXFSet );
- static_cast<SvxGradientTabPage&>(pTab).Reset(&m_rXFSet);
- static_cast<SvxGradientTabPage&>(pTab).Show();
+ static_cast<SvxGradientTabPage*>(pTab)->SetColorList( m_pColorList );
+ static_cast<SvxGradientTabPage*>(pTab)->SetGradientList( m_pGradientList );
+ static_cast<SvxGradientTabPage*>(pTab)->SetPos( &m_nPos );
+ static_cast<SvxGradientTabPage*>(pTab)->SetGrdChgd( m_pnGradientListState );
+ static_cast<SvxGradientTabPage*>(pTab)->SetColorChgd( m_pnColorListState );
+ static_cast<SvxGradientTabPage*>(pTab)->Construct();
+ static_cast<SvxGradientTabPage*>(pTab)->ActivatePage( m_rXFSet );
+ static_cast<SvxGradientTabPage*>(pTab)->Reset(&m_rXFSet);
+ static_cast<SvxGradientTabPage*>(pTab)->Show();
}
else if(nId == HATCH)
{
- static_cast<SvxHatchTabPage&>(pTab).SetColorList( m_pColorList );
- static_cast<SvxHatchTabPage&>(pTab).SetHatchingList( m_pHatchingList );
- static_cast<SvxHatchTabPage&>(pTab).SetPos(&m_nPos);
- static_cast<SvxHatchTabPage&>(pTab).SetHtchChgd( m_pnHatchingListState );
- static_cast<SvxHatchTabPage&>(pTab).SetColorChgd( m_pnColorListState );
- static_cast<SvxHatchTabPage&>(pTab).Construct();
- static_cast<SvxHatchTabPage&>(pTab).ActivatePage( m_rXFSet );
- static_cast<SvxHatchTabPage&>(pTab).Reset(&m_rXFSet);
- static_cast<SvxHatchTabPage&>(pTab).Show();
+ static_cast<SvxHatchTabPage*>(pTab)->SetColorList( m_pColorList );
+ static_cast<SvxHatchTabPage*>(pTab)->SetHatchingList( m_pHatchingList );
+ static_cast<SvxHatchTabPage*>(pTab)->SetPos(&m_nPos);
+ static_cast<SvxHatchTabPage*>(pTab)->SetHtchChgd( m_pnHatchingListState );
+ static_cast<SvxHatchTabPage*>(pTab)->SetColorChgd( m_pnColorListState );
+ static_cast<SvxHatchTabPage*>(pTab)->Construct();
+ static_cast<SvxHatchTabPage*>(pTab)->ActivatePage( m_rXFSet );
+ static_cast<SvxHatchTabPage*>(pTab)->Reset(&m_rXFSet);
+ static_cast<SvxHatchTabPage*>(pTab)->Show();
}
else if(nId == BITMAP)
{
- static_cast<SvxBitmapTabPage&>(pTab).SetBitmapList( m_pBitmapList );
- static_cast<SvxBitmapTabPage&>(pTab).SetPos( &m_nPos );
- static_cast<SvxBitmapTabPage&>(pTab).SetBmpChgd( m_pnBitmapListState );
- static_cast<SvxBitmapTabPage&>(pTab).Construct();
- static_cast<SvxBitmapTabPage&>(pTab).ActivatePage( m_rXFSet );
- static_cast<SvxBitmapTabPage&>(pTab).Reset(&m_rXFSet);
- static_cast<SvxBitmapTabPage&>(pTab).Show();
+ static_cast<SvxBitmapTabPage*>(pTab)->SetBitmapList( m_pBitmapList );
+ static_cast<SvxBitmapTabPage*>(pTab)->SetPos( &m_nPos );
+ static_cast<SvxBitmapTabPage*>(pTab)->SetBmpChgd( m_pnBitmapListState );
+ static_cast<SvxBitmapTabPage*>(pTab)->Construct();
+ static_cast<SvxBitmapTabPage*>(pTab)->ActivatePage( m_rXFSet );
+ static_cast<SvxBitmapTabPage*>(pTab)->Reset(&m_rXFSet);
+ static_cast<SvxBitmapTabPage*>(pTab)->Show();
}
else if(nId == PATTERN)
{
- static_cast<SvxPatternTabPage&>(pTab).SetColorList( m_pColorList );
- static_cast<SvxPatternTabPage&>(pTab).SetPatternList( m_pPatternList );
- static_cast<SvxPatternTabPage&>(pTab).SetPos( &m_nPos );
- static_cast<SvxPatternTabPage&>(pTab).SetPtrnChgd( m_pnPatternListState );
- static_cast<SvxPatternTabPage&>(pTab).SetColorChgd( m_pnColorListState );
- static_cast<SvxPatternTabPage&>(pTab).Construct();
- static_cast<SvxPatternTabPage&>(pTab).ActivatePage( m_rXFSet );
- static_cast<SvxPatternTabPage&>(pTab).Reset( &m_rXFSet );
- static_cast<SvxPatternTabPage&>(pTab).Show();
+ static_cast<SvxPatternTabPage*>(pTab)->SetColorList( m_pColorList );
+ static_cast<SvxPatternTabPage*>(pTab)->SetPatternList( m_pPatternList );
+ static_cast<SvxPatternTabPage*>(pTab)->SetPos( &m_nPos );
+ static_cast<SvxPatternTabPage*>(pTab)->SetPtrnChgd( m_pnPatternListState );
+ static_cast<SvxPatternTabPage*>(pTab)->SetColorChgd( m_pnColorListState );
+ static_cast<SvxPatternTabPage*>(pTab)->Construct();
+ static_cast<SvxPatternTabPage*>(pTab)->ActivatePage( m_rXFSet );
+ static_cast<SvxPatternTabPage*>(pTab)->Reset( &m_rXFSet );
+ static_cast<SvxPatternTabPage*>(pTab)->Show();
}
}
commit 4622e44812656954cd3cd96671d99db8db6d6fb6
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Nov 11 18:01:05 2016 +0100
Avoid -fsanitize=enum
...when doing "Format - Page..." in Writer:
> cui/source/tabpages/tparea.cxx:268:12: runtime error: load of value 4294967295, which is not a valid value for type 'FillType'
> #0 0x7f89ff653a41 in SvxAreaTabPage::Reset(SfxItemSet const*) cui/source/tabpages/tparea.cxx:268:12
> #1 0x7f8d15524560 in SfxTabDialog::ActivatePageHdl(TabControl*) sfx2/source/dialog/tabdlg.cxx:1117:19
> #2 0x7f8d1551b0e3 in SfxTabDialog::LinkStubActivatePageHdl(void*, TabControl*) sfx2/source/dialog/tabdlg.cxx:1035:1
> #3 0x7f8cef623f37 in Link<TabControl*, void>::Call(TabControl*) const include/tools/link.hxx:84:45
> #4 0x7f8cef5dfcaa in TabControl::ActivatePage() vcl/source/control/tabctrl.cxx:1601:19
Change-Id: I19dd3ed9d362132daa3f3be9fb0e9702a62bdeb0
diff --git a/cui/source/tabpages/tparea.cxx b/cui/source/tabpages/tparea.cxx
index 1facc7c..b89ebae 100644
--- a/cui/source/tabpages/tparea.cxx
+++ b/cui/source/tabpages/tparea.cxx
@@ -270,7 +270,7 @@ void SvxAreaTabPage::Reset_Impl( const SfxItemSet* rAttrs )
void SvxAreaTabPage::Reset( const SfxItemSet* rAttrs )
{
- FillType eFillType = static_cast<FillType>(maBox.GetCurrentButtonPos());
+ auto eFillType = maBox.GetCurrentButtonPos();
switch(eFillType)
{
case SOLID:
More information about the Libreoffice-commits
mailing list