Modified the "box" command to run a check on the specified box values

and raise an error if the values are outside the range (MINFINITY,
INFINITY) used by magic's layout planes.
This commit is contained in:
Tim Edwards 2022-01-27 16:57:23 -05:00
parent 45bb62de2f
commit 62c8af719c
2 changed files with 15 additions and 2 deletions

View File

@ -1 +1 @@
8.3.262 8.3.263

View File

@ -615,7 +615,7 @@ CmdBox(w, cmd)
}; };
CellDef *rootBoxDef; CellDef *rootBoxDef;
Rect rootBox, editbox, *boxptr; Rect rootBox, editbox, savebox, *boxptr;
Point ll; Point ll;
int option, direction, distancex, distancey; int option, direction, distancex, distancey;
int width, height; int width, height;
@ -756,6 +756,7 @@ CmdBox(w, cmd)
/*----------------------------------------------------------*/ /*----------------------------------------------------------*/
boxptr = (refEdit) ? &editbox : &rootBox; boxptr = (refEdit) ? &editbox : &rootBox;
savebox = *boxptr;
/*----------------------------------------------------------*/ /*----------------------------------------------------------*/
/* Parse arguments according to class */ /* Parse arguments according to class */
@ -1167,6 +1168,18 @@ badusage:
if (refEdit) if (refEdit)
GeoTransRect(&EditToRootTransform, &editbox, &rootBox); GeoTransRect(&EditToRootTransform, &editbox, &rootBox);
/*----------------------------------------------------------*/
/* Check for numerical overflow in box values */
/*----------------------------------------------------------*/
if (boxptr->r_ll.p_x < (MINFINITY + 2) || boxptr->r_ll.p_x > (INFINITY - 2) ||
boxptr->r_ll.p_y < (MINFINITY + 2) || boxptr->r_ll.p_y > (INFINITY - 2))
{
*boxptr = savebox;
TxError("Box out of bounds.\n");
return;
}
/*----------------------------------------------------------*/ /*----------------------------------------------------------*/
/* Change the position of the box in the layout window */ /* Change the position of the box in the layout window */
/*----------------------------------------------------------*/ /*----------------------------------------------------------*/