I need to better understand our css::uno::Reference

Lionel Elie Mamane lionel at mamane.lu
Wed Jun 18 13:58:34 PDT 2014


On Wed, Jun 18, 2014 at 05:04:02PM +0200, Stephan Bergmann wrote:
> On 06/18/2014 04:21 PM, Lionel Elie Mamane wrote:

>> Why does the attached patch lead to a segfault in "make
>> JunitTest_dbaccess_unoapi"? (The patch is against very recent master,
>> as in "I pushed right before hitting send on this email".)

>> Essentially, it changes, in code internal to a class,
>> Reference< XResultSet >
>> by
>> Reference< OResultSet >

> Short answer (from just browsing the top of FOO.patch):  Use
> css::uno::Reference<X> only for (C++ classes representing) UNO interfaces,
> and use rtl::Reference<C> for C++ classes implementing UNO objects.

Aha. This works. If you feel like explaining the C++-technical reason
behind why we need different Reference implementations for the two
cases... Feel free.

I assume I can mix-and-match both, they will use the same (shared)
counters for reference counting?

I see there is no rtl::WeakReference, and no automatic conversion from
rtl::Reference to css::uno::(Weak)Reference; oh well, I can add
".get()" here and there.

-- 
Lionel


More information about the LibreOffice mailing list