Summary: Open a new document. Create a header with some text. Create a 
footer with some text. Put the cursor into the header and insert a page 
number into the footer. BOOM.

Something seems to be fishy with FL_DocLayout::findBlockAtPosition(), here 
is the code snippet that triggers the assert:
         if(pBL->getSectionLayout()->getType() == FL_SECTION_HDRFTR)
         {
                 fl_HdrFtrShadow * pShadow = NULL;
                 FV_View * pView = getView();
                 if(pView && pView->isHdrFtrEdit())
                 {
                         pShadow = pView->getEditShadow();
                 }
                 else
                 {
                         pShadow = ((fl_HdrFtrSectionLayout *) 
pBL->getSectionLayout())->getFirstShadow();
                 }
                 fl_BlockLayout * ppBL = NULL;
                 if(pShadow != NULL)
                         ppBL = pShadow->findMatchingBlock(pBL);
                 else
                 {

The call ppBL = pShadow->findMatchingBlock(pBL) fails, no matching block is 
found.

Could it be a problem that the cursor is in the header but the page number 
is inserted into the footer?

Here is the call stack, for completeness:
fl_HdrFtrShadow::findMatchingBlock(fl_BlockLayout * 0x00c5fa68) line 2989 + 
31 bytes
FL_DocLayout::findBlockAtPosition(unsigned int 62) line 523 + 12 bytes
FV_View::_findBlockAtPosition(unsigned int 62) line 1395 + 18 bytes
FV_View::getBlockFormat(const char * * * 0x0012fb48, unsigned char 1) line 
3469 + 15 bytes
FV_View::notifyListeners(const unsigned short 1207) line 538
FV_View::_generalUpdate() line 5526
FV_View::processPageNumber(HdrFtrType FL_HDRFTR_FOOTER, const char * * 
0x0012fbe8) line 3147
s_doInsertPageNumbers(FV_View * 0x00c46768) line 6022
ap_EditMethods::insPageNo(AV_View * 0x00c46768, EV_EditMethodCallData * 
0x0012fc44) line 6029 + 9 bytes
EV_Menu::invokeMenuMethod(AV_View * 0x00c46768, EV_EditMethod * 0x007dc570, 
unsigned short * 0x00000000, unsigned int 0) line 201 + 18 bytes
EV_Win32Menu::onCommand(AV_View * 0x00c46768, HWND__ * 0x0003032e, unsigned 
int 1087) line 152
XAP_Win32Frame::_FrameWndProc(HWND__ * 0x0003032e, unsigned int 273, 
unsigned int 1087, long 0) line 410 + 31 bytes

Matti


At 01:53 PM 23/9/2001 -0400, you wrote:
>Alan Horkan wrote:
> > crash
> >
> > this was repeatable on windows 2000  using the
> > 2001-09-21 build from http://www.niksbiks.dk/Abi/
>
>I can duplicate the crash using the same build on Win95 (the OEM version
>(last)).
>
> > Error Message
> > The instruction at "0x0046eb95" referenced memory at "0x00000084". The
> > memory could not be "read".
>
>I started the debugger and found the PC at that address ("0x0046eb95").
>The instruction at this address is:
>mov ecx.dword ptr(eax+84h)
>
>For kicks, I then started to read up on and then try a stack trace.  Is
>a stack trace the same as viewing the Call Stack?  This was easy enough
>to do using View --> Debug Windows --> Call Stack.  There wasn't much
>there, just one entry:
>
>"ABIWORD 0046eb95()"
>
>Randy Kramer
>Trying to learn so that when I get an unrepeatable crash I can collect
>useful information.


Reply via email to