[Libreoffice] Bug in XclImpOutlineBuffer::MakeScOutline ?

julien2412 serval2412 at yahoo.fr
Wed Sep 14 15:42:01 PDT 2011


Hello,

I'm trying to open a quite big xls file (sorry, I'm allowed to publish it).
Here are the 4 types of error in logs :
Error: SolarMutex not locked From File
/home/maryline/compile-libreoffice/libo/vcl/source/app/dbggui.cxx at Line
1978
This one is famous, I don't know if someone's working on it but I'll forget
it for the moment.

Error: UniString::SearchAndReplaceAllAscii() - pAsciiStr include characters
> 127 From File
/home/maryline/compile-libreoffice/libo/tools/source/string/strascii.cxx at
Line 628
After some research to confirm first thought, some characters in the file
have an ascii code > 127 and LO doesn't like. Ok why not.

Error: UniString::SearchAscii() - pAsciiStr include characters > 127 From
File
/home/maryline/compile-libreoffice/libo/tools/source/string/strascii.cxx at
Line 566
not same line in the file but same error as above

Error: XclImpOutlineBuffer::MakeScOutline: unexpected level! From File
/home/maryline/compile-libreoffice/libo/sc/source/filter/excel/exctools.cxx
at Line 148
Here we are, let's extract some extra lines to have the context (all these
lines are in a loop) :
    139         sal_uInt8 nLevel = itr->second;
    140         sal_uInt8 nCurLevel =
static_cast<sal_uInt8>(aOutlineStack.size());
    141         if (nLevel > nCurLevel)
    142         {
    143             for (sal_uInt8 i = 0; i < nLevel - nCurLevel; ++i)
    144                 aOutlineStack.push_back(nPos);
    145         }
    146         else
    147         {
    148             OSL_ENSURE(nLevel < nCurLevel,
"XclImpOutlineBuffer::MakeScOutline: unexpected level!");

Ok, let's say nLevel = 4 and nCurLevel = 3 at the beginning (I don't know if
it's possible but since this case is taken into account and there's no
runtime exception or something if it's not the case...)
So we go in the if part.
then enter in the for part and we loop once only.
and so aOutlineStack grows of 1
so we loop again on the big loop.
Now nLevel = 4 and nCurLevel = 4
now we go in else part, OSL_ENSURE fails.

Since it's quite late here, perhaps I misunderstood or missed something.
I don't know how it has to work but it seems there something wrong here no ?

Julien

--
View this message in context: http://nabble.documentfoundation.org/Bug-in-XclImpOutlineBuffer-MakeScOutline-tp3337397p3337397.html
Sent from the Dev mailing list archive at Nabble.com.


More information about the LibreOffice mailing list