Hey,
WAE is enabled in my autogen.lastrun for master sources. I just updated and
had this during compilation:
/home/julien/compile-libreoffice/libo/sc/source/core/tool/rangenam.cxx: In
member function ‘void ScRangeData::SetCode(ScTokenArray&)’:
/home/julien/compile-libreoffice/libo/sc/source/core/tool/rangenam.cxx:642:50:
error: ‘auto_ptr’ is deprecated (declared at
/usr/include/c++/4.7/backward/auto_ptr.h:87)
[-Werror=deprecated-declarations]
cc1plus: all warnings being treated as errors
Here are the lines:
640 void ScRangeData::SetCode( ScTokenArray& rArr )
641 {
642 ::std::auto_ptr<ScTokenArray> pOldCode( pCode); // old pCode
will be deleted
643 pCode = new ScTokenArray( rArr );
644 InitCode();
645 }
Could it be replaced by a non deprecated function (I don't know between
std::shared_ptr, std::unique_ptr or boost functions)?
usually can be replaced with boost::scoped_ptr.
but in this case i wonder, what purpose does pOldCode serve?
why isn't pCode some kind of smart pointer?
Replace it with boost::scoped_ptr. The idea here is that the auto_ptr
keeps the object until the end of the function and therefore we have
no memory leak in line 643.
Calc core normally does not use smart pointers because with million or
billion of calls that can happen in a bigger calc document the
overhead of smart pointers is not always insignificant.
Regards,
Markus
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.