[PATCH] fix proposed for fdo#48368
Noel Power
nopower at suse.com
Mon Apr 16 01:41:17 PDT 2012
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
More information about the LibreOffice
mailing list