Wrong indentation which leads to segfault in sc/source/ui/docshell/docfunc.cxx
John LeMoyne Castle
lemoyne.castle at gmail.com
Mon Dec 31 17:29:41 PST 2012
If only I could *always* read well ... and I didn't second guess myself so
easily ...
The stack trace from 47466 - Crash occurring in Windows 64bit versions...
msvcr90!_invalid_parameter_noinfo+0xc
sclo!std::_Tree<std::_Tset_traits<short,std::less<short>,std::allocator<short>,0>
>::const_iterator::operator*+0x35 [c:\program files\microsoft visual studio
9.0\vc\include\xtree @ 264]
sclo!std::_Tree<std::_Tset_traits<short,std::less<short>,std::allocator<short>,0>
>::iterator::operator*+0xf [c:\program files\microsoft visual studio
9.0\vc\include\xtree @ 466]
sclo!ScDocFunc::AutoFormat+0x520
[d:\losrc\3553\sc\source\ui\docshell\docfunc.cxx @ 3739]
sclo!ScViewFunc::AutoFormat+0x70
[d:\losrc\3553\sc\source\ui\view\viewfun2.cxx @ 1575]
Is almost identical to yours.
You HAVE reproduced fdo#47466.
The iterator functions appear to paper over the access at itr.end()
everywhere except 1) Windows 64bit where it crashes and 2) your cppcheck
which has replaced the standard iterator with a safe iterator, if I am not
mistaken. But really the unasked for width adjustments people see could be
the result of an uncaught exception shortcutting all the rest of the
width/height fix, etc so format does not get restored to fixed width and
height during the AutoFormat. Bubbling exception from this could also help
explain the report of related undo failures after the errant width/height
change as in
fdo# 34552 EDITING: Calc loses row height value when modifying a cell
https://bugs.freedesktop.org/show_bug.cgi?id=34552
-- if it skips out from the point of the missing braces then it will fail
to record the undo info for the width height change and that could cause the
behavior there
And maybe even other bugs if calls to this AutoFormat function are involved
there ...
Like https://bugs.freedesktop.org/show_bug.cgi?id=57176
Undo of delete of Conditional Formatting works for one cell but fails for
multi-cell (cf. if (bSize) ...)
On final note, I don't think that
bool ScDocFunc::AutoFormat( const ScRange& rRange, ...
will return bSuccess = true under any circumstances. Just sayin' .... ;-)
I will seek more bugs and test them before and after the brace insert in the
next few days ...
Again... looks like a real good catch here. Gratz and thank you for the
puzzle.
Happy New Year !!!
LeMoyne
--
View this message in context: http://nabble.documentfoundation.org/Wrong-indentation-which-leads-to-segfault-in-sc-source-ui-docshell-docfunc-cxx-tp4026726p4026757.html
Sent from the Dev mailing list archive at Nabble.com.
More information about the LibreOffice
mailing list