Hello,
I reproduced the problem indicated by fdo#48368 and attached to the
bugtracker bt with symbols (see
https://bugs.freedesktop.org/attachment.cgi?id=59985&action=edit)
Here are the lines of basctl/source/basicide/basidesh.cxx which seem to
cause the problem :
420 for ( sal_uLong nWin = 0; bCanClose && ( nWin <
aIDEWindowTable.size() ); nWin++ )
421 {
422 IDEBaseWindow* pWin = aIDEWindowTable[ nWin ];
423 if ( !pWin->CanClose() )
I runned this on gdb and found this :
aIDEWindowTable.size() = 1 but even at the first loop, pWin is null so line
423 fails.
I searched about aIDEWindowTable and found this in
basctl/source/inc/basidesh.hxx :
62 #if _SOLAR__PRIVATE
63 typedef std::map<sal_uInt16, IDEBaseWindow*> IDEWindowTable;
64 #else
65 typedef std::map<sal_uInt16, void*> IDEWindowTable;
66 #endif
So I propose this straight forward fix :
diff --git a/basctl/source/basicide/basidesh.cxx
b/basctl/source/basicide/basidesh.cxx
index e4dcd98..02e10c2 100644
--- a/basctl/source/basicide/basidesh.cxx
+++ b/basctl/source/basicide/basidesh.cxx
@@ -417,9 +417,9 @@ sal_uInt16 BasicIDEShell::PrepareClose( sal_Bool bUI,
sal_Bool bForBrowsing )
else
{
sal_Bool bCanClose = sal_True;
- for ( sal_uLong nWin = 0; bCanClose && ( nWin <
aIDEWindowTable.size() ); nWin++ )
+ for (IDEWindowTable::const_iterator it = aIDEWindowTable.begin();
bCanClose && (it != aIDEWindowTable.end()); ++it)
{
- IDEBaseWindow* pWin = aIDEWindowTable[ nWin ];
+ IDEBaseWindow* pWin = it->second;
if ( !pWin->CanClose() )
{
if ( !m_aCurLibName.isEmpty() && ( pWin->IsDocument(
m_aCurDocument ) || pWin->GetLibName() != m_aCurLibName ) )
I can commit and push on master of course but I'd like first your opinion
about this.
Julien.
--
View this message in context:
http://nabble.documentfoundation.org/PATCH-fix-proposed-for-fdo-48368-tp3910905p3910905.html
Sent from the Dev mailing list archive at Nabble.com.
Context
- [PATCH] fix proposed for fdo#48368 · julien2412
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.