Re: some more info on multi-view list crash


Subject: Re: some more info on multi-view list crash
From: Martin Sevior (msevior@mccubbin.ph.unimelb.edu.au)
Date: Fri Nov 24 2000 - 07:58:14 CST


I think what is happenning is that that fl_AutoNum is trying to start two
lists based on the same shd and id number. I think this can be fixed by
checking to see if there is already a list defined in the vector of lists
in pd_Document. All we have to do to fix this is check to see if an
fl_AutoNum * already exists in the pd_Document.cpp vector of fl_AutoNum *
's

Use m_pDoc->getListByID(id)

to see if the current id is taken. If so refuse to
construct the fl_AutoNum. I think code should be placed in
fl_BlockLayout at line 531. Instead just set m_pAutoNum to the non-null
value returned by getListByID. The View needs a pointer to the fl_AutoNum *
defined by the common shd.

For safety check to see if the code at line 4633 is also attempting to
create a new fl_AutoNum with an existing id.

Good Luck! I'll check at the airport in about 10 hours time..

Martin

On Fri, 24 Nov 2000, Mike Nordell wrote:

> I think this one should be reproducible on all platforms.
>
> Start AW.
> Open a new window on the doc.
> Press the Numbered List toolbar button. Bang.
>
> Callstack:
>
> fl_DocListener::change()
> PD_Document::notifyListeners()
> pt_PieceTable::_fmtChangeStruxWithNotify()
> pt_PieceTable::changeStruxFmt()
> PD_Document::changeStruxFmt()
> FV_View::setBlockFormat()
> fl_BlockLayout::_createListLabel()
> fl_BlockLayout::listUpdate()
> fl_DocListener::change()
> PD_Document::notifyListeners()
> PD_Document::listUpdate()
> fl_AutoNum::_updateItems()
> fl_AutoNum::insertFirstItem()
> fl_BlockLayout::_lookupProperties()
> fl_BlockLayout::doclistener_changeStrux()
> fl_SectionLayout::bl_doclistener_changeStrux()
> fl_DocListener::change()
> PD_Document::notifyListeners()
> pt_PieceTable::_fmtChangeStruxWithNotify()
> pt_PieceTable::changeStruxFmt()
> PD_Document::changeStruxFmt()
> fl_BlockLayout::StartList(List_Type NUMBERED_LIST, ...)
> fl_BlockLayout::StartList()
> FV_View::processSelectedBlocks(List_Type NUMBERED_LIST)
> ap_EditMethods::doNumbers()
> EV_Toolbar::invokeToolbarMethod()
>
> Could it be the repeated call-chain
> PD_Document::changeStruxFmt() ->
> pt_PieceTable::changeStruxFmt() ->
> pt_PieceTable::_fmtChangeStruxWithNotify() ->
> PD_Document::notifyListeners() ->
> fl_DocListener::change()
>
> first called from fl_BlockLayout::StartList and then from
> FV_View::setBlockFormat that makes it go poof?
>
> /Mike
>
>
>



This archive was generated by hypermail 2b25 : Fri Nov 24 2000 - 07:58:20 CST