- From: Irene VATTON <Irene.Vatton@inrialpes.fr>
- Date: Tue, 18 Apr 2000 15:39:20 +0200
- To: Fox One <rockman66_1999@yahoo.com>
- cc: www-amaya@w3.org
This bug is fixed in the 3.1 version. Thanks for the report. > I think that I've found a bug in Amaya. > > If I use Amaya to open a copy of the Html-3.2 > Reference Spec, it takes a couple of seconds > to load, okay. > > But when I click on the scrollbar to scroll down, > it freezes. > > I decided to limit the max processor time and run > Amaya under GDB to see what was going on. This is > what happened: > > > -------------------------------------------------- > Program received signal SIGXCPU, CPU time limit > exceeded. > RedrawFilledBoxes (frame=1, xmin=0, xmax=566, > ymin=258, ymax=516) > at ../../thotlib/view/frame.c:243 > 243 yorg += imageDesc->PicHeight; > (gdb) print yorg > $1 = 0 > (gdb) print imageDesc->PicHeight > $2 = 0 > (gdb) print ymin > $3 = 258 > > > The following is the offending code in frame.c: > -------------------------------------------------- > imageDesc = (PictInfo *) pAb->AbPictBackground; > if (imageDesc) > { > xorg = pBox->BxXOrg + pBox->BxLMargin + > pBox->BxLBorder + pBox->BxLPadding; > yorg = pBox->BxYOrg + pBox->BxTMargin + > pBox->BxTBorder + pBox->BxTPadding; > /* check the visibility of the background image > */ > if (imageDesc->PicPresent == FillFrame) > { > while (xorg + imageDesc->PicWidth < xmin) > xorg += imageDesc->PicWidth; > xd = xorg; > width = width + xmin - xorg; > while (yorg + imageDesc->PicHeight < ymin) > 243: yorg += imageDesc->PicHeight; > yd = yorg + FrameTable[frame].FrTopMargin; > height = height + ymin - yorg; > } > > > > -------------------------------------------------- > At the top, you see that `pAb' is cast to a > (PictInfo *) and assigned to `imageDesc.' Okay. > > `imageDesc' is of type (PictInfo *) > `pAb' is of type (PtrAbstractBox) > > > But these two structures cannot be overlapped: > -------------------------------------------------- > >From typemedia.h: > > > /* Description of an abstract images of a document > view */ > typedef struct _AbstractBox > { > PtrElement AbElement; /* Corresponding > element in the I.R. */ > PtrBox AbBox; /* Box descriptor > index */ > PtrAbstractBox AbEnclosing; /* Linking towards the > enclosing asbstr. box */ > PtrAbstractBox AbNext; /* Linking towards the > next sibling abstract box */ > PtrAbstractBox AbPrevious; /* Linking towards the > previous abstract box */ > PtrAbstractBox AbFirstEnclosed; /* Linking > towards the first child > abstract box > */ > PtrAbstractBox AbNextRepeated;/* Linking towards > the next repeated > abstract > box (laid out??) */ > PtrAbstractBox AbPreviousRepeated; /* Linking > towards the previous > repeated > abstract box */ > PtrPSchema AbPSchema; /* Presentation schema > of the abstract box */ > int AbDocView; /* Document view > number */ > PtrCopyDescr AbCopyDescr; /* Descriptor of the > copied element if the > > > > -------------------------------------------------- > >From picture.h: > > > typedef struct > { > int PicXArea; > int PicYArea; > int PicWArea; > int PicHArea; > int PicWidth; > int PicHeight; > PictureScaling PicPresent; > int PicType; > CHAR_T* PicFileName; > Pixmap PicPixmap; > int PicNbColors; > int *PicColors; > Pixmap PicAlpha; > # ifndef _WINDOWS > Pixmap PicMask; > # else /* _WINDOWS */ > int bgRed; > int bgGreen; > int bgBlue; > # endif /* _WINDOWS */ > ThotBool mapped; /* Used for > ExtraHandlers */ > ThotBool created; /* Used for > ExtraHandlers */ > ThotWidget wid; /* Used for > ExtraHandlers */ > void* pluginInstance; /* Used for > ExtraHandlers */ > } PictInfo; > > > -------------------------------------------------- > As you can see, they are very different structures. > > This sort of thing would have been caught from the > get-go, were it not for the typecast. > > I don't know anything about the Thot library or > what the original author intended to do, but I do > think > that this demonstrates the danger of typecasts. :-) > > > > > > > > __________________________________________________ > Do You Yahoo!? > Send online invitations with Yahoo! Invites. > http://invites.yahoo.com > -- Irene.
Received on Tuesday, 18 April 2000 09:40:03 UTC