[Libreoffice-commits] core.git: include/vcl vcl/source

Stephan Bergmann sbergman at redhat.com
Wed Nov 16 12:57:56 UTC 2016


 include/vcl/status.hxx       |    4 -
 vcl/source/window/status.cxx |   99 +++++++++++++++++++++----------------------
 2 files changed, 50 insertions(+), 53 deletions(-)

New commits:
commit f7dea2d29541256fb68436c0a4c76302832630d8
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Nov 16 13:49:18 2016 +0100

    Avoid use after free from within StatusBar::dispose
    
    Valgrind reveals that in Writer doing "Table - Insert Table... - Insert" (so the
    table-related toolbar appears at the bottom of the document window), then "File
    - Exit LibreOffice - Don't Save" causes
    
    > Invalid read of size 8
    >    at 0xE87CA6C: std::__cxx1998::vector<ImplStatusItem*, std::allocator<ImplStatusItem*> >::size() const (/usr/lib/gcc/x86_64-redhat-linux/6.2.1/../../../../include/c++/6.2.1/bits/stl_vector.h:656)
    >    by 0xE87B09F: StatusBar::GetItemCount() const (/vcl/source/window/status.cxx:1019)
    >    by 0x75248D91: VCLXAccessibleStatusBar::VCLXAccessibleStatusBar(VCLXWindow*) (/accessibility/source/standard/vclxaccessiblestatusbar.cxx:43)
    >    by 0x75201C37: (anonymous namespace)::AccessibleFactory::createAccessibleContext(VCLXWindow*) (/accessibility/source/helper/acc_factory.cxx:312)
    >    by 0xD27B191: VCLXWindow::CreateAccessibleContext() (/toolkit/source/awt/vclxwindow.cxx:862)
    >    by 0xD2862AC: VCLXWindow::getAccessibleContext() (/toolkit/source/awt/vclxwindow.cxx:2375)
    >    by 0xD2864AF: non-virtual thunk to VCLXWindow::getAccessibleContext() (/toolkit/source/awt/vclxwindow.cxx:0)
    >    by 0x2A5CF0CD: AtkListener::handleChildRemoved(com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessibleContext> const&, com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessible> const&) (/vcl/unx/gtk3/a11y/../../gtk/a11y/atklistener.cxx:200)
    >    by 0x2A5CF646: AtkListener::notifyEvent(com::sun::star::accessibility::AccessibleEventObject const&) (/vcl/unx/gtk3/a11y/../../gtk/a11y/atklistener.cxx:301)
    >    by 0x77D6DB7: comphelper::AccessibleEventNotifier::addEvent(unsigned int, com::sun::star::accessibility::AccessibleEventObject const&) (/comphelper/source/misc/accessibleeventnotifier.cxx:277)
    >    by 0x77D4219: comphelper::OAccessibleContextHelper::NotifyAccessibleEvent(short, com::sun::star::uno::Any const&, com::sun::star::uno::Any const&) (/comphelper/source/misc/accessiblecontexthelper.cxx:186)
    >    by 0xD1FB887: VCLXAccessibleComponent::ProcessWindowEvent(VclWindowEvent const&) (/toolkit/source/awt/vclxaccessiblecomponent.cxx:210)
    >    by 0xD1FAEC0: VCLXAccessibleComponent::WindowEventListener(VclWindowEvent&) (/toolkit/source/awt/vclxaccessiblecomponent.cxx:125)
    >    by 0xD1F9C87: VCLXAccessibleComponent::LinkStubWindowEventListener(void*, VclWindowEvent&) (/toolkit/source/awt/vclxaccessiblecomponent.cxx:114)
    >    by 0xE797CD7: Link<VclWindowEvent&, void>::Call(VclWindowEvent&) const (/include/tools/link.hxx:84)
    >    by 0xE794189: vcl::Window::CallEventListeners(unsigned long, void*) (/vcl/source/window/event.cxx:240)
    >    by 0xE8EDC9F: vcl::Window::dispose() (/vcl/source/window/window.cxx:172)
    >    by 0xE875B9B: StatusBar::dispose() (/vcl/source/window/status.cxx:170)
    >    by 0xEAD71EE: VclReferenceBase::disposeOnce() (/vcl/source/outdev/vclreferencebase.cxx:42)
    >    by 0x3AA25A76: VclPtr<StatusBar>::disposeAndClear() (/include/vcl/vclptr.hxx:231)
    >    by 0x3AC1CF0D: framework::StatusBarManager::dispose() (/framework/source/uielement/statusbarmanager.cxx:202)
    >    by 0x3AC2936D: framework::StatusBarWrapper::dispose() (/framework/source/uielement/statusbarwrapper.cxx:75)
    >    by 0x3AA4F246: framework::LayoutManager::implts_destroyStatusBar() (/framework/source/layoutmanager/layoutmanager.cxx:840)
    >    by 0x3AA4EF68: framework::LayoutManager::implts_destroyElements() (/framework/source/layoutmanager/layoutmanager.cxx:443)
    >    by 0x3AA4ED7E: framework::LayoutManager::implts_reset(bool) (/framework/source/layoutmanager/layoutmanager.cxx:412)
    >    by 0x3AA5E683: framework::LayoutManager::frameAction(com::sun::star::frame::FrameActionEvent const&) (/framework/source/layoutmanager/layoutmanager.cxx:2814)
    >    by 0x3AB0A30C: (anonymous namespace)::Frame::implts_sendFrameActionEvent(com::sun::star::frame::FrameAction const&) (/framework/source/services/frame.cxx:3110)
    >    by 0x3AB0299D: (anonymous namespace)::Frame::setComponent(com::sun::star::uno::Reference<com::sun::star::awt::XWindow> const&, com::sun::star::uno::Reference<com::sun::star::frame::XController> const&) (/framework/source/services/frame.cxx:1557)
    >    by 0x3AB055AB: (anonymous namespace)::Frame::close(unsigned char) (/framework/source/services/frame.cxx:1801)
    >    by 0x3AAF1DC4: framework::Desktop::impl_closeFrames(bool) (/framework/source/services/desktop.cxx:1698)
    >    by 0x3AAF132A: framework::Desktop::terminate() (/framework/source/services/desktop.cxx:230)
    >    by 0x3A9D71CA: framework::CloseDispatcher::implts_terminateApplication() (/framework/source/dispatch/closedispatcher.cxx:562)
    >    by 0x3A9D632C: framework::CloseDispatcher::impl_asyncCallback(LinkParamNone*) (/framework/source/dispatch/closedispatcher.cxx:410)
    >    by 0x3A9D49D7: framework::CloseDispatcher::LinkStubimpl_asyncCallback(void*, LinkParamNone*) (/framework/source/dispatch/closedispatcher.cxx:254)
    >    by 0xE9B4BE7: Link<LinkParamNone*, void>::Call(LinkParamNone*) const (/include/tools/link.hxx:84)
    >    by 0xEE027A7: vcl::EventPoster::DoEvent_Impl(void*) (/vcl/source/helper/evntpost.cxx:52)
    >    by 0xEE02767: vcl::EventPoster::LinkStubDoEvent_Impl(void*, void*) (/vcl/source/helper/evntpost.cxx:48)
    >    by 0xE91FC17: Link<void*, void>::Call(void*) const (/include/tools/link.hxx:84)
    >    by 0xE91CE8B: ImplHandleUserEvent(ImplSVEvent*) (/vcl/source/window/winproc.cxx:1957)
    >    by 0xE91A33F: ImplWindowFrameProc(vcl::Window*, SalEvent, void const*) (/vcl/source/window/winproc.cxx:2507)
    >    by 0xEFEA88D: SalFrame::CallCallback(SalEvent, void const*) const (/vcl/inc/salframe.hxx:276)
    >    by 0xEFFF457: SalGenericDisplay::DispatchInternalEvent() (/vcl/unx/generic/app/gendisp.cxx:86)
    >  Address 0x6ccc64b0 is 32 bytes inside a block of size 56 free'd
    >    at 0x4C2D22A: operator delete(void*) (/builddir/build/BUILD/valgrind-3.11.0/coregrind/m_replacemalloc/vg_replace_malloc.c:576)
    >    by 0xE875B47: StatusBar::dispose() (/vcl/source/window/status.cxx:165)
    
    It looks rather pointless that StatusBar::dispose causes instantiation of a
    VCLXAccessibleStatusBar, but not sure what would be the right level to fix this.
    So work around it by making the pointlessly pointer mpItemList non-pointer, and
    clearing it in StatusBar::dispose, so that a latter call to
    StatusBar::GetItemCount returns 0 (which appears to be OK for the needs of that
    zombie VCLXAccessibleStatusBar).
    
    Change-Id: I1e982a335cb78e87a6c16633174bca76b59c6049

diff --git a/include/vcl/status.hxx b/include/vcl/status.hxx
index a270663..518ba6a 100644
--- a/include/vcl/status.hxx
+++ b/include/vcl/status.hxx
@@ -27,8 +27,6 @@
 #include <vector>
 
 struct ImplStatusItem;
-typedef ::std::vector< ImplStatusItem* > ImplStatusItemList;
-
 
 void VCL_DLLPUBLIC DrawProgress(vcl::Window* pWindow, vcl::RenderContext& rRenderContext, const Point& rPos,
                                 long nOffset, long nPrgsWidth, long nPrgsHeight,
@@ -61,7 +59,7 @@ class VCL_DLLPUBLIC StatusBar : public vcl::Window
 {
     class   ImplData;
 private:
-    ImplStatusItemList* mpItemList;
+    std::vector<ImplStatusItem *> mpItemList;
     ImplData*           mpImplData;
     OUString            maPrgsTxt;
     Point               maPrgsTxtPos;
diff --git a/vcl/source/window/status.cxx b/vcl/source/window/status.cxx
index 0c727b3..5a48fbd 100644
--- a/vcl/source/window/status.cxx
+++ b/vcl/source/window/status.cxx
@@ -125,7 +125,6 @@ void StatusBar::ImplInit( vcl::Window* pParent, WinBits nStyle )
     Window::ImplInit( pParent, nStyle & ~WB_BORDER, nullptr );
 
     // remember WinBits
-    mpItemList      = new ImplStatusItemList;
     mpImplData->mpVirDev = VclPtr<VirtualDevice>::Create( *this );
     mnCurItemId     = 0;
     mbFormat        = true;
@@ -159,10 +158,10 @@ StatusBar::~StatusBar()
 void StatusBar::dispose()
 {
     // delete all items
-    for (ImplStatusItem* i : *mpItemList) {
+    for (ImplStatusItem* i : mpItemList) {
         delete i;
     }
-    delete mpItemList;
+    mpItemList.clear();
 
     // delete VirtualDevice
     mpImplData->mpVirDev.disposeAndClear();
@@ -235,7 +234,7 @@ void StatusBar::ImplFormat()
     // sum up widths
     mnItemsWidth = STATUSBAR_OFFSET_X;
     long nOffset = 0;
-    for (ImplStatusItem* i : *mpItemList) {
+    for (ImplStatusItem* i : mpItemList) {
         pItem = i;
         if ( pItem->mbVisible )
         {
@@ -277,7 +276,7 @@ void StatusBar::ImplFormat()
             nX += ImplGetSVData()->maNWFData.mnStatusBarLowerRightOffset;
     }
 
-    for (ImplStatusItem* i : *mpItemList) {
+    for (ImplStatusItem* i : mpItemList) {
         pItem = i;
         if ( pItem->mbVisible ) {
             if ( pItem->mnBits & StatusBarItemBits::AutoSize ) {
@@ -302,7 +301,7 @@ Rectangle StatusBar::ImplGetItemRectPos( sal_uInt16 nPos ) const
 {
     Rectangle       aRect;
     ImplStatusItem* pItem;
-    pItem = ( nPos < mpItemList->size() ) ? (*mpItemList)[ nPos ] : nullptr;
+    pItem = ( nPos < mpItemList.size() ) ? mpItemList[ nPos ] : nullptr;
     if ( pItem )
     {
         if ( pItem->mbVisible )
@@ -319,9 +318,9 @@ Rectangle StatusBar::ImplGetItemRectPos( sal_uInt16 nPos ) const
 
 sal_uInt16 StatusBar::ImplGetFirstVisiblePos() const
 {
-    for( size_t nPos = 0; nPos < mpItemList->size(); nPos++ )
+    for( size_t nPos = 0; nPos < mpItemList.size(); nPos++ )
     {
-        ImplStatusItem* pItem = (*mpItemList)[ nPos ];
+        ImplStatusItem* pItem = mpItemList[ nPos ];
         if ( pItem )
         {
             if ( pItem->mbVisible )
@@ -364,7 +363,7 @@ void StatusBar::ImplDrawItem(vcl::RenderContext& rRenderContext, bool bOffScreen
         return;
 
     // compute output region
-    ImplStatusItem* pItem = (*mpItemList)[nPos];
+    ImplStatusItem* pItem = mpItemList[nPos];
     long nW = mpImplData->mnItemBorderWidth + 1;
     Rectangle aTextRect(aRect.Left() + nW, aRect.Top() + nW,
                         aRect.Right() - nW, aRect.Bottom() - nW);
@@ -650,9 +649,9 @@ void StatusBar::MouseButtonDown( const MouseEvent& rMEvt )
             Point  aMousePos = rMEvt.GetPosPixel();
 
             // search for clicked item
-            for ( size_t i = 0; i < mpItemList->size(); ++i )
+            for ( size_t i = 0; i < mpItemList.size(); ++i )
             {
-                ImplStatusItem* pItem = (*mpItemList)[ i ];
+                ImplStatusItem* pItem = mpItemList[ i ];
                 // check item for being clicked
                 if ( ImplGetItemRectPos( sal_uInt16(i) ).IsInside( aMousePos ) )
                 {
@@ -682,7 +681,7 @@ void StatusBar::Paint(vcl::RenderContext& rRenderContext, const Rectangle& rRect
     if (mbFormat)
         ImplFormat();
 
-    sal_uInt16 nItemCount = sal_uInt16( mpItemList->size() );
+    sal_uInt16 nItemCount = sal_uInt16( mpItemList.size() );
 
     if (mbProgressMode)
     {
@@ -860,7 +859,7 @@ void StatusBar::DataChanged( const DataChangedEvent& rDCEvt )
         mbFormat = true;
         ImplInitSettings();
         long nFudge = GetTextHeight() / 4;
-        for (ImplStatusItem* pItem : *mpItemList)
+        for (ImplStatusItem* pItem : mpItemList)
         {
             long nWidth = GetTextWidth( pItem->maText ) + nFudge;
             if( nWidth > pItem->mnWidth + STATUSBAR_OFFSET )
@@ -920,10 +919,10 @@ void StatusBar::InsertItem( sal_uInt16 nItemId, sal_uLong nWidth,
     pItem->mbVisible        = true;
 
     // add item to list
-    if ( nPos < mpItemList->size() ) {
-        mpItemList->insert( mpItemList->begin() + nPos, pItem );
+    if ( nPos < mpItemList.size() ) {
+        mpItemList.insert( mpItemList.begin() + nPos, pItem );
     } else {
-        mpItemList->push_back( pItem );
+        mpItemList.push_back( pItem );
     }
 
     mbFormat = true;
@@ -938,8 +937,8 @@ void StatusBar::RemoveItem( sal_uInt16 nItemId )
     sal_uInt16 nPos = GetItemPos( nItemId );
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
     {
-        delete (*mpItemList)[ nPos ];
-        mpItemList->erase( mpItemList->begin() + nPos );
+        delete mpItemList[ nPos ];
+        mpItemList.erase( mpItemList.begin() + nPos );
 
         mbFormat = true;
         if ( ImplIsItemUpdate() )
@@ -955,7 +954,7 @@ void StatusBar::ShowItem( sal_uInt16 nItemId )
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
     {
-        ImplStatusItem* pItem = (*mpItemList)[ nPos ];
+        ImplStatusItem* pItem = mpItemList[ nPos ];
         if ( !pItem->mbVisible )
         {
             pItem->mbVisible = true;
@@ -975,7 +974,7 @@ void StatusBar::HideItem( sal_uInt16 nItemId )
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
     {
-        ImplStatusItem* pItem = (*mpItemList)[ nPos ];
+        ImplStatusItem* pItem = mpItemList[ nPos ];
         if ( pItem->mbVisible )
         {
             pItem->mbVisible = false;
@@ -994,7 +993,7 @@ bool StatusBar::IsItemVisible( sal_uInt16 nItemId ) const
     sal_uInt16 nPos = GetItemPos( nItemId );
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
-        return (*mpItemList)[ nPos ]->mbVisible;
+        return mpItemList[ nPos ]->mbVisible;
     else
         return false;
 }
@@ -1002,10 +1001,10 @@ bool StatusBar::IsItemVisible( sal_uInt16 nItemId ) const
 void StatusBar::Clear()
 {
     // delete all items
-    for (ImplStatusItem* i : *mpItemList) {
+    for (ImplStatusItem* i : mpItemList) {
         delete i;
     }
-    mpItemList->clear();
+    mpItemList.clear();
 
     mbFormat = true;
     if ( ImplIsItemUpdate() )
@@ -1016,20 +1015,20 @@ void StatusBar::Clear()
 
 sal_uInt16 StatusBar::GetItemCount() const
 {
-    return (sal_uInt16)mpItemList->size();
+    return (sal_uInt16)mpItemList.size();
 }
 
 sal_uInt16 StatusBar::GetItemId( sal_uInt16 nPos ) const
 {
-    if ( nPos < mpItemList->size() )
-        return (*mpItemList)[ nPos ]->mnId;
+    if ( nPos < mpItemList.size() )
+        return mpItemList[ nPos ]->mnId;
     return 0;
 }
 
 sal_uInt16 StatusBar::GetItemPos( sal_uInt16 nItemId ) const
 {
-    for ( size_t i = 0, n = mpItemList->size(); i < n; ++i ) {
-        if ( (*mpItemList)[ i ]->mnId == nItemId ) {
+    for ( size_t i = 0, n = mpItemList.size(); i < n; ++i ) {
+        if ( mpItemList[ i ]->mnId == nItemId ) {
             return sal_uInt16( i );
         }
     }
@@ -1048,7 +1047,7 @@ sal_uInt16 StatusBar::GetItemId( const Point& rPos ) const
             // get rectangle
             Rectangle aRect = ImplGetItemRectPos( nPos );
             if ( aRect.IsInside( rPos ) )
-                return (*mpItemList)[ nPos ]->mnId;
+                return mpItemList[ nPos ]->mnId;
         }
     }
 
@@ -1086,7 +1085,7 @@ Point StatusBar::GetItemTextPos( sal_uInt16 nItemId ) const
         if ( nPos != STATUSBAR_ITEM_NOTFOUND )
         {
             // get rectangle
-            ImplStatusItem* pItem = (*mpItemList)[ nPos ];
+            ImplStatusItem* pItem = mpItemList[ nPos ];
             Rectangle aRect = ImplGetItemRectPos( nPos );
             long nW = mpImplData->mnItemBorderWidth + 1;
             Rectangle           aTextRect( aRect.Left()+nW, aRect.Top()+nW,
@@ -1111,7 +1110,7 @@ sal_uLong StatusBar::GetItemWidth( sal_uInt16 nItemId ) const
     sal_uInt16 nPos = GetItemPos( nItemId );
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
-        return (*mpItemList)[ nPos ]->mnWidth;
+        return mpItemList[ nPos ]->mnWidth;
 
     return 0;
 }
@@ -1121,7 +1120,7 @@ StatusBarItemBits StatusBar::GetItemBits( sal_uInt16 nItemId ) const
     sal_uInt16 nPos = GetItemPos( nItemId );
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
-        return (*mpItemList)[ nPos ]->mnBits;
+        return mpItemList[ nPos ]->mnBits;
 
     return StatusBarItemBits::NONE;
 }
@@ -1131,7 +1130,7 @@ long StatusBar::GetItemOffset( sal_uInt16 nItemId ) const
     sal_uInt16 nPos = GetItemPos( nItemId );
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
-        return (*mpItemList)[ nPos ]->mnOffset;
+        return mpItemList[ nPos ]->mnOffset;
 
     return 0;
 }
@@ -1142,7 +1141,7 @@ void StatusBar::SetItemText( sal_uInt16 nItemId, const OUString& rText )
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
     {
-        ImplStatusItem* pItem = (*mpItemList)[ nPos ];
+        ImplStatusItem* pItem = mpItemList[ nPos ];
 
         if ( pItem->maText != rText )
         {
@@ -1176,7 +1175,7 @@ const OUString& StatusBar::GetItemText( sal_uInt16 nItemId ) const
 
     assert( nPos != STATUSBAR_ITEM_NOTFOUND );
 
-    return (*mpItemList)[ nPos ]->maText;
+    return mpItemList[ nPos ]->maText;
 }
 
 void StatusBar::SetItemCommand( sal_uInt16 nItemId, const OUString& rCommand )
@@ -1185,7 +1184,7 @@ void StatusBar::SetItemCommand( sal_uInt16 nItemId, const OUString& rCommand )
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
     {
-        ImplStatusItem* pItem = (*mpItemList)[ nPos ];
+        ImplStatusItem* pItem = mpItemList[ nPos ];
 
         if ( pItem->maCommand != rCommand )
             pItem->maCommand = rCommand;
@@ -1197,7 +1196,7 @@ const OUString StatusBar::GetItemCommand( sal_uInt16 nItemId )
     sal_uInt16 nPos = GetItemPos( nItemId );
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
-        return (*mpItemList)[ nPos ]->maCommand;
+        return mpItemList[ nPos ]->maCommand;
 
     return OUString();
 }
@@ -1208,7 +1207,7 @@ void StatusBar::SetItemData( sal_uInt16 nItemId, void* pNewData )
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
     {
-        ImplStatusItem* pItem = (*mpItemList)[ nPos ];
+        ImplStatusItem* pItem = mpItemList[ nPos ];
         pItem->mpUserData = pNewData;
 
         // call Draw-Item if it's a User-Item
@@ -1227,7 +1226,7 @@ void* StatusBar::GetItemData( sal_uInt16 nItemId ) const
     sal_uInt16 nPos = GetItemPos( nItemId );
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
-        return (*mpItemList)[ nPos ]->mpUserData;
+        return mpItemList[ nPos ]->mpUserData;
 
     return nullptr;
 }
@@ -1241,7 +1240,7 @@ void StatusBar::RedrawItem(sal_uInt16 nItemId)
     if ( nPos == STATUSBAR_ITEM_NOTFOUND )
         return;
 
-    ImplStatusItem* pItem = (*mpItemList)[ nPos ];
+    ImplStatusItem* pItem = mpItemList[ nPos ];
     if (pItem && (pItem->mnBits & StatusBarItemBits::UserDraw) &&
         pItem->mbVisible && ImplIsItemUpdate())
     {
@@ -1256,7 +1255,7 @@ void StatusBar::SetHelpText( sal_uInt16 nItemId, const OUString& rText )
     sal_uInt16 nPos = GetItemPos( nItemId );
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
-        (*mpItemList)[ nPos ]->maHelpText = rText;
+        mpItemList[ nPos ]->maHelpText = rText;
 }
 
 const OUString& StatusBar::GetHelpText( sal_uInt16 nItemId ) const
@@ -1265,7 +1264,7 @@ const OUString& StatusBar::GetHelpText( sal_uInt16 nItemId ) const
 
     assert ( nPos != STATUSBAR_ITEM_NOTFOUND );
 
-    ImplStatusItem* pItem = (*mpItemList)[ nPos ];
+    ImplStatusItem* pItem = mpItemList[ nPos ];
     if ( pItem->maHelpText.isEmpty() && ( !pItem->maHelpId.isEmpty() || !pItem->maCommand.isEmpty() ))
     {
         Help* pHelp = Application::GetHelp();
@@ -1286,7 +1285,7 @@ void StatusBar::SetQuickHelpText( sal_uInt16 nItemId, const OUString& rText )
     sal_uInt16 nPos = GetItemPos( nItemId );
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
-        (*mpItemList)[ nPos ]->maQuickHelpText = rText;
+        mpItemList[ nPos ]->maQuickHelpText = rText;
 }
 
 const OUString& StatusBar::GetQuickHelpText( sal_uInt16 nItemId ) const
@@ -1295,7 +1294,7 @@ const OUString& StatusBar::GetQuickHelpText( sal_uInt16 nItemId ) const
 
     assert ( nPos != STATUSBAR_ITEM_NOTFOUND );
 
-    ImplStatusItem* pItem = (*mpItemList)[ nPos ];
+    ImplStatusItem* pItem = mpItemList[ nPos ];
     return pItem->maQuickHelpText;
 }
 
@@ -1304,7 +1303,7 @@ void StatusBar::SetHelpId( sal_uInt16 nItemId, const OString& rHelpId )
     sal_uInt16 nPos = GetItemPos( nItemId );
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
-        (*mpItemList)[ nPos ]->maHelpId = rHelpId;
+        mpItemList[ nPos ]->maHelpId = rHelpId;
 }
 
 OString StatusBar::GetHelpId( sal_uInt16 nItemId ) const
@@ -1314,7 +1313,7 @@ OString StatusBar::GetHelpId( sal_uInt16 nItemId ) const
     OString aRet;
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
     {
-        ImplStatusItem* pItem = (*mpItemList)[ nPos ];
+        ImplStatusItem* pItem = mpItemList[ nPos ];
         if ( !pItem->maHelpId.isEmpty() )
             aRet = pItem->maHelpId;
         else
@@ -1407,14 +1406,14 @@ void StatusBar::SetText(const OUString& rText)
 Size StatusBar::CalcWindowSizePixel() const
 {
     size_t  i = 0;
-    size_t  nCount = mpItemList->size();
+    size_t  nCount = mpItemList.size();
     long    nOffset = 0;
     long    nCalcWidth = (STATUSBAR_OFFSET_X*2);
     long    nCalcHeight;
 
     while ( i < nCount )
     {
-        ImplStatusItem* pItem = (*mpItemList)[ i ];
+        ImplStatusItem* pItem = mpItemList[ i ];
         nCalcWidth += pItem->mnWidth + nOffset;
         nOffset = pItem->mnOffset;
         i++;
@@ -1464,7 +1463,7 @@ void StatusBar::SetAccessibleName( sal_uInt16 nItemId, const OUString& rName )
 
     if ( nPos != STATUSBAR_ITEM_NOTFOUND )
     {
-        ImplStatusItem* pItem = (*mpItemList)[ nPos ];
+        ImplStatusItem* pItem = mpItemList[ nPos ];
 
         if ( pItem->maAccessibleName != rName )
         {
@@ -1480,7 +1479,7 @@ const OUString& StatusBar::GetAccessibleName( sal_uInt16 nItemId ) const
 
     assert ( nPos != STATUSBAR_ITEM_NOTFOUND );
 
-    return (*mpItemList)[ nPos ]->maAccessibleName;
+    return mpItemList[ nPos ]->maAccessibleName;
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list