remove_if for nothing in dbdata.cxx (sc module)

Stephan Bergmann sbergman at redhat.com
Fri Jan 2 06:21:48 PST 2015


On 12/28/2014 05:08 PM, julien2412 wrote:
> Hello,
>
> I noticed this part:
>      889 void ScDBCollection::DeleteOnTab( SCTAB nTab )
>      890 {
> ...
>      908     remove_if(maAnonDBs.begin(), maAnonDBs.end(), func);
>      909 }
>
> "remove_if" is useless since there's no erase.
> I thought about adding an "erase" by taking example of this
> http://en.wikipedia.org/wiki/Erase-remove_idiom
> but AnonDBs doesn't have an ad hoc erase method (like NamedDBs, but this one
> has a "simple" erase method), see
> http://opengrok.libreoffice.org/xref/core/sc/inc/dbdata.hxx#152
>
> Should we remove this line? Should we add an ad hoc "erase" method to
> implement erase-remove idiom in NamedDBs + AnonDBs?
>
> Any thoughts?

Presumably the call to erase is inadvertently missing ever since that 
call to remove_if got introduced in 
<http://cgit.freedesktop.org/libreoffice/core/commit/?id=1b059829bc6698c15c6bb5459a61348ac56ffda5> 
"Added container to store global anonymous db ranges."

AnonDBs (sc/inc/dbdata.hxx) looks like it is a thin wrapper around a 
boost::ptr_vector, exporting just those member functions of the 
underlying ptr_vector class that are used by client code, plus some 
AnonDBs-specific functions, which arguably is not the most 
maintenance-friendly approach.

So looks like AnonDBs should also export the underlying ptr_vector's 
ranged erase.


More information about the LibreOffice mailing list