Package: kword Version: 0.1 (KDE 1.90 Beta >= 20000517) Severity: grave Problem description ------------------- - start kword with an empty document - mode "Edit Frames" (second icon on the "tools_toolbar") - now double-click somewhere outside all frames --> SEGV. Relevant code from koffice/kword/kword_page.cc: void KWPage::vmdEditFrame( int mx, int my ) { int frameset = doc->getFrameSet( mx, my ); if ( doc->getFrameSet( frameset )->getFrameType() == FT_PART ) { KWPartFrameSet *fs = dynamic_cast( doc->getFrameSet( fr This function is called by void KWPage::viewportMouseDoubleClickEvent (QMouseEvent*). If the call to doc->getFrameSet(mx,my) returns -1 (as can be seen on the debug messages to stdout), the next call to doc->getFrameSet(frameset) returns NULL... Fix: check return value of getFrameset(int,int), and maybe others. Patch - tested and works (on my system at least :-) Linux/i386 2.3.99-pre8 glibc-2.1 XFree86 3.3.6 gcc 2.95.2 Apply in kde src dir with "patch -p0". HTH, Wolfgang Oertl --- koffice/kword/kword_page.cc Fri May 12 00:43:41 2000 +++ /usr/src/kde1/koffice/kword/kword_page.cc Wed May 31 16:07:09 2000 @@ -1256,13 +1256,23 @@ void KWPage::vmdEditFrame( int mx, int my ) { int frameset = doc->getFrameSet( mx, my ); - if ( doc->getFrameSet( frameset )->getFrameType() == FT_PART ) { - KWPartFrameSet *fs = dynamic_cast( doc->getFrameSet( frameset ) ); + if( frameset == -1 ) + return; + + KWFrameSet *fset = doc->getFrameSet( frameset ); + if( !fset ) + return; + + switch( fset->getFrameType() ) { + case FT_PART: { + KWPartFrameSet *fs = dynamic_cast( fset ); fs->activate( gui->getView() ); editNum = frameset; - } else if ( doc->getFrameSet( frameset )->getFrameType() == FT_FORMULA ) { + break; + } + case FT_FORMULA: { gui->getView()->showFormulaToolbar( TRUE ); - KWFormulaFrameSet *fs = dynamic_cast( doc->getFrameSet( frameset ) ); + KWFormulaFrameSet *fs = dynamic_cast( fset ); fs->activate( this ); editNum = frameset; KWFormat *f = fs->getFormat(); @@ -1270,6 +1280,10 @@ //formatChanged( *f, FALSE ); gui->getView()->setFormat( *f, TRUE, FALSE ); delete f; + break; + } + default: /* not handled: FT_BASE FT_TEXT FT_PICTURE */ + break; } }