[PATCH] fix proposed for fdo#48368
julien2412
serval2412 at yahoo.fr
Sat Apr 14 14:20:19 PDT 2012
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.
More information about the LibreOffice
mailing list