include/comphelper/interfacecontainer3.hxx |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

New commits:
commit 28616cf0989dab2ca2a1710c64f6fb1c1d78c584
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Sat Dec 23 20:43:27 2023 +0000
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Sun Dec 24 00:50:18 2023 +0100

    OInterfaceIteratorHelper3 always copies maData contents in ctor
    
    while I think the idea is that the copy on write should only
    be done by OInterfaceContainerHelper3, i.e. that ownership
    really transfers to OInterfaceIteratorHelper3 and OInterfaceContainerHelper3
    makes a new one if that turns out to be necessary
    
    Change-Id: I6e97e3b303f133edbbb35ac23f39cf5348ad49fe
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161257
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/include/comphelper/interfacecontainer3.hxx 
b/include/comphelper/interfacecontainer3.hxx
index 4b3d44bab69d..02f96658dcd2 100644
--- a/include/comphelper/interfacecontainer3.hxx
+++ b/include/comphelper/interfacecontainer3.hxx
@@ -63,7 +63,8 @@ public:
     OInterfaceIteratorHelper3(OInterfaceContainerHelper3<ListenerT>& rCont_)
         : rCont(rCont_)
         , maData(rCont.maData)
-        , nRemain(maData->size())
+        // const_cast so we don't trigger make_unique via 
o3tl::cow_wrapper::operator->
+        , nRemain(std::as_const(maData)->size())
     {
     }
 
@@ -96,12 +97,12 @@ template <class ListenerT>
 const css::uno::Reference<ListenerT>& 
OInterfaceIteratorHelper3<ListenerT>::next()
 {
     nRemain--;
-    return (*maData)[nRemain];
+    return (*std::as_const(maData))[nRemain];
 }
 
 template <class ListenerT> void OInterfaceIteratorHelper3<ListenerT>::remove()
 {
-    rCont.removeInterface((*maData)[nRemain]);
+    rCont.removeInterface((*std::as_const(maData))[nRemain]);
 }
 
 /**

Reply via email to