[Libreoffice-commits] .: 9 commits - boost/boost_1_44_0-logical-op-parentheses.patch boost/boost_1_44_0-unused-parameters.patch boost/makefile.mk cppcanvas/source framework/source sc/qa sc/source vcl/inc vcl/ios

Lubos Lunak l.lunak at suse.cz
Wed Apr 4 08:47:52 PDT 2012


On Wednesday 04 of April 2012, Tor Lillqvist wrote:
> commit 2b00b0e0a1a47c3d174ee9e86826b60a356f3dbf
> Author: Tor Lillqvist <tml at iki.fi>
> Date:   Tue Apr 3 23:45:26 2012 +0300
>
>     WaE: call to pure virtual member function
>
> diff --git a/framework/source/classes/menumanager.cxx
> b/framework/source/classes/menumanager.cxx index 4b0af60..202b7eb 100644
> --- a/framework/source/classes/menumanager.cxx
> +++ b/framework/source/classes/menumanager.cxx
> @@ -146,8 +146,14 @@ MenuManager::MenuManager(
>      m_xFrame            = rFrame;
>      m_bInitialized      = sal_False;
>      m_bIsBookmarkMenu   = sal_False;
> +#ifdef LIBO_WERROR
> +    // Wtf? Clang says: call to pure virtual member function
> +    // 'acquire'; overrides of 'acquire' in subclasses are not
> +    // available in the constructor of 'XInterface'

 This is 
http://stackoverflow.com/questions/496440/c-virtual-function-from-constructor 
(or http://www.artima.com/cppsource/nevercall.html if you want it in more 
detail, although the 'never' is a bit far-fetched, it is well-defined what 
happens).

> +    assert(!"Call to pure virtual member function");
> +#else
>      SAL_STATIC_CAST( ::com::sun::star::uno::XInterface*,
> (OWeakObject*)this )->acquire(); -
> +#endif

 However this appears to a Clang bug, in that it reports an incorrect warning, 
probably it gets confused by the casts. I cannot actually trigger this code 
to run, but in my small testcase, code like this generated the warning, but 
worked normally. So I expect that whenever somebody actually reaches this 
code, this will assert needlessly.

 I'm not sure what the proper fix would be though, as the class apparently 
inherits from XInterface in 3 different ways, and I wonder what the point of 
the explicit casts is. I'll go with thinking the casts are pointless historic 
garbage and try plain call to acquire(), it shouldn't make it worse.

-- 
 Lubos Lunak
 l.lunak at suse.cz


More information about the LibreOffice mailing list