[Libreoffice] [REVIEW] Debug-mode getline-using sal unittest crashes, triggered by _GLIBCXX_DEBUG

Caolán McNamara caolanm at redhat.com
Mon Jul 4 07:41:19 PDT 2011


On Fri, 2011-07-01 at 18:59 +0200, Julien Nabet wrote:
> Le 30/06/2011 14:26, Nigel Hawkins a écrit :
> > On Wed, 2011-06-29 at 23:26 +0200, Julien Nabet wrote:
> >> diff --git a/sal/qa/osl/process/osl_process.cxx
> >> b/sal/qa/osl/process/osl_process.cxx
> >> index 2535c4c..8695d79 100644
> >> --- a/sal/qa/osl/process/osl_process.cxx
> >> +++ b/sal/qa/osl/process/osl_process.cxx
> >> @@ -477,6 +477,7 @@ public:
> >>            );
> >>
> >>            std::string line;
> >> +       line.reserve(10000);
> >>            while (std::getline(file, line, '\0'))
> >>                env_container->push_back(line);
> >>            tidy_container(*env_container);
> > That change fixes the problem here.
> Hello,
> 
> Can i push this patch as a workaround or do you think about a better 
> solution ?

Presumably this works because the string is sufficiently big that it
doesn't need to be resized by getline so some realloc is skipped in the
other chunk of code compiled with different and apparently incompatible
settings.

Seeing as this thread is dragging on and and we don't have a stand-alone
reproducer to blame on anyone in particular, feel free to stick a
reserve in here. Pick a number that's a reasonably small power of 2
which works for you, e.g. 1024, 4096, 8192 or something and we can
justify it as a micro-optimization :-)

C.



More information about the LibreOffice mailing list