[Libreoffice] cppu::OPropertySetHelper ABI backwards compatibility

Lionel Elie Mamane lionel at mamane.lu
Sun Aug 21 03:08:24 PDT 2011


On Sun, Aug 21, 2011 at 01:54:17AM +0200, Lionel Elie Mamane wrote:

> 11207ae93191fb966676423e6d377c8292a8cf0b
>     Make XPropertSet2 not a child interface of XPropertySet.

>     This is to preserve ABI backward compatibility with
>     cppu::OPropertySetHelper.

> 80b1e662777100a7dfd80176a2b528880a838167

>     Added XPropertySet2 to allow disabling of change event
>     notifications.

> From the second (later) commit log message, you intended to preserve
> ABI, but I get the impressions ABI backwards compatibility is still
> broken in a different way by the addition of

>     virtual void SAL_CALL enableChangeListenerNotification( sal_Bool bEnable )
>         throw(::com::sun::star::uno::RuntimeException);

> From what I observe, at least with GNU GCC/g++ on Debian GNU/Linux
> amd64 (I wouldn't know about MSVC++ and g++ on MS Windows, but
> possibly it is the same), it seems all the virtual functions that are
> declared *after* that one in the header are shifted one position in
> the virtual function table, and that lookups in the virtual function
> table are by position, not by name/signature.

Maybe not. It seems my build was hosed, possibly because of wrong
inter-module dependencies so that a change to cppuhelper/propshlp.hxx
is not properly propagated everywhere.

I'm making new tests doing "make clean && make" every time, and I'll
let you know what I find out.

-- 
Lionel


More information about the LibreOffice mailing list