Patch: Fix bug 90222 - Replace ScaList with std container

Eike Rathke erack at redhat.com
Wed Jul 29 06:27:07 PDT 2015


Hi Ryan,

Thanks for your patch!

On Wednesday, 2015-07-29 22:45:18 +1200, Ryan McCoskrie wrote:

> (I'm having trouble with logerrit)

That is why? We much prefer patches on gerrit, it eases review and
handling a lot. Using git review might also be an option for you. If for
some reason you *have* to use mail attachments, please use git
format-patch to generate the patch to be attached, which preserves
author and date and commit message, or even use the git send-email
command.

That being said ...

> diff --git a/scaddins/source/datefunc/datefunc.cxx b/scaddins/source/datefunc/datefunc.cxx
>  ScaFuncDataList::ScaFuncDataList( ResMgr& rResMgr ) :
> -    nLast( 0xFFFFFFFF )
> +    nLast( contents.begin() )

This looks odd. I think it should be contents.end() instead. But why
change it to iterator anyway? When using a vector, the last accessed
name could still be remembered as offset into the vector.

>  ScaFuncDataList::~ScaFuncDataList()
>  {
> -    for( ScaFuncData* pFData = First(); pFData; pFData = Next() )
> -        delete pFData;
> +    for( std::vector<ScaFuncData*>::iterator it = contents.begin(); it != contents.end(); ++it )
> +        delete *nLast;

This does not work.. it deletes *nLast multiple times. It should be *it
instead.

> -const ScaFuncData* ScaFuncDataList::Get( const OUString& rProgrammaticName ) const
> +const ScaFuncData* ScaFuncDataList::Get( const OUString& rProgrammaticName )
>  {
>      if( aLastName == rProgrammaticName )
> -        return Get( nLast );
> +        return *nLast;

So this could be  return contents[nLast];  if nLast was still the offset
intead of an iterator.

> diff --git a/scaddins/source/datefunc/datefunc.hxx b/scaddins/source/datefunc/datefunc.hxx
> -class ScaFuncDataList : private ScaList
> +class ScaFuncDataList
>  {
> -    OUString             aLastName;
> -    sal_uInt32                  nLast;
> +    OUString                                    aLastName;
> +    std::vector<ScaFuncData*>::iterator         nLast;

Please adapt the variable name when changing the type, we use the 'n'
prefix for numeric variables, it then should be itLast or some such.
However, as said,  size_t nLast  would still be fine.

> +    std::vector<ScaFuncData*>                   contents;

Maybe naming it vContents would be better.

> -    inline const ScaFuncData*   Get( sal_uInt32 nIndex ) const;
> -    const ScaFuncData*          Get( const OUString& rProgrammaticName ) const;
> +    const ScaFuncData*          Get( const OUString& rProgrammaticName );

Instead of making the function non-const you could also make nLast and
aLastName mutable member variables.

All above the same for the pricing Add-In.

> diff --git a/scaddins/source/pricing/pricing.cxx b/scaddins/source/pricing/pricing.cxx
>  ScaFuncDataList::~ScaFuncDataList()
>  {
> -    for( ScaFuncData* pFData = First(); pFData; pFData = Next() )
> -        delete pFData;
> +    for( std::vector<ScaFuncData*>::iterator it = contents.begin(); it != contents.end();  ++it )
> +        delete *it;

This one correctly deletes *it.

Last but not least:

Apparently we don't have your license statement on file, could you
please send us a blanket statement that you contribute all your past and
future patches under the MPLv2 and LGPLv3+ licenses? Best on the dev
mailing list libreoffice at lists.freedesktop.org so we can link to it from
https://wiki.documentfoundation.org/Development/Developers

Something like this does nicely:

All of my past & future contributions to LibreOffice may be
licensed under the MPLv2/LGPLv3+ dual license.

Best use Subject: <your full name> license statement

Sorry for the inconvenience and thank you for cooperating :-)

  Eike

-- 
LibreOffice Calc developer. Number formatter stricken i18n transpositionizer.
GPG key "ID" 0x65632D3A - 2265 D7F3 A7B0 95CC 3918  630B 6A6C D5B7 6563 2D3A
Better use 64-bit 0x6A6CD5B765632D3A here is why: https://evil32.com/
Care about Free Software, support the FSFE https://fsfe.org/support/?erack
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20150729/a468cb8a/attachment.sig>


More information about the LibreOffice mailing list