- 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