On 14/04/12 22:20, julien2412 wrote:
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.
please commit looks like the correct fix to me ( on a side note can
anyone remember what ( #if _SOLAR__PRIVATE ) is all about, I can't see
any reason for it in the context of this code in anycase :-/ and would
be tempted to delete it. And btw thanks, always a pleasure to come back
from vacation to see something from the to do list fixed by someone else
:-))) thanks again!!
Noel
Context
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.