# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1053247330 0 # Node ID 4fe2df53ec9fd506f4bdb849c51493a1211b4a1e # Parent 5cc81d3c2bca8771137dd3e8f0730d7329fc3925 Division by zero fix in the layout engine. diff -r 5cc81d3c2bca -r 4fe2df53ec9f mac/dw.c --- a/mac/dw.c Thu May 15 18:03:41 2003 +0000 +++ b/mac/dw.c Sun May 18 08:42:10 2003 +0000 @@ -403,14 +403,24 @@ { if(*depth > 0) { + float calcval; + if(thisbox->type == DW_VERT) { - tmp->xratio = ((float)((thisbox->items[z].width * thisbox->xratio)-((thisbox->items[z].pad*2)+(thisbox->pad*2))))/((float)(tmp->minwidth-((thisbox->items[z].pad*2)+(thisbox->pad*2)))); + calcval = (float)(tmp->minwidth-((thisbox->items[z].pad*2)+(thisbox->pad*2))); + if(calcval == 0.0) + tmp->xratio = thisbox->xratio; + else + tmp->xratio = ((float)((thisbox->items[z].width * thisbox->xratio)-((thisbox->items[z].pad*2)+(thisbox->pad*2))))/calcval; tmp->width = thisbox->items[z].width; } if(thisbox->type == DW_HORZ) { - tmp->yratio = ((float)((thisbox->items[z].height * thisbox->yratio)-((thisbox->items[z].pad*2)+(thisbox->pad*2))))/((float)(tmp->minheight-((thisbox->items[z].pad*2)+(thisbox->pad*2)))); + calcval = (float)(tmp->minheight-((thisbox->items[z].pad*2)+(thisbox->pad*2))); + if(calcval == 0.0) + tmp->yratio = thisbox->yratio; + else + tmp->yratio = ((float)((thisbox->items[z].height * thisbox->yratio)-((thisbox->items[z].pad*2)+(thisbox->pad*2))))/calcval; tmp->height = thisbox->items[z].height; } } diff -r 5cc81d3c2bca -r 4fe2df53ec9f os2/dw.c --- a/os2/dw.c Thu May 15 18:03:41 2003 +0000 +++ b/os2/dw.c Sun May 18 08:42:10 2003 +0000 @@ -1127,14 +1127,24 @@ { if(*depth > 0) { + float calcval; + if(thisbox->type == DW_VERT) { - tmp->xratio = ((float)((thisbox->items[z].width * thisbox->xratio)-((thisbox->items[z].pad*2)+(thisbox->pad*2))))/((float)(tmp->minwidth-((thisbox->items[z].pad*2)+(thisbox->pad*2)))); + calcval = (float)(tmp->minwidth-((thisbox->items[z].pad*2)+(thisbox->pad*2))); + if(calcval == 0.0) + tmp->xratio = thisbox->xratio; + else + tmp->xratio = ((float)((thisbox->items[z].width * thisbox->xratio)-((thisbox->items[z].pad*2)+(thisbox->pad*2))))/calcval; tmp->width = thisbox->items[z].width; } if(thisbox->type == DW_HORZ) { - tmp->yratio = ((float)((thisbox->items[z].height * thisbox->yratio)-((thisbox->items[z].pad*2)+(thisbox->pad*2))))/((float)(tmp->minheight-((thisbox->items[z].pad*2)+(thisbox->pad*2)))); + calcval = (float)(tmp->minheight-((thisbox->items[z].pad*2)+(thisbox->pad*2))); + if(calcval == 0.0) + tmp->yratio = thisbox->yratio; + else + tmp->yratio = ((float)((thisbox->items[z].height * thisbox->yratio)-((thisbox->items[z].pad*2)+(thisbox->pad*2))))/calcval; tmp->height = thisbox->items[z].height; } } diff -r 5cc81d3c2bca -r 4fe2df53ec9f win/dw.c --- a/win/dw.c Thu May 15 18:03:41 2003 +0000 +++ b/win/dw.c Sun May 18 08:42:10 2003 +0000 @@ -1090,14 +1090,24 @@ { if(*depth > 0) { + float calcval; + if(thisbox->type == DW_VERT) { - tmp->xratio = ((float)((thisbox->items[z].width * thisbox->xratio)-((thisbox->items[z].pad*2)+(thisbox->pad*2))))/((float)(tmp->minwidth-((thisbox->items[z].pad*2)+(thisbox->pad*2)))); + calcval = (float)(tmp->minwidth-((thisbox->items[z].pad*2)+(thisbox->pad*2))); + if(calcval == 0.0) + tmp->xratio = thisbox->xratio; + else + tmp->xratio = ((float)((thisbox->items[z].width * thisbox->xratio)-((thisbox->items[z].pad*2)+(thisbox->pad*2))))/calcval; tmp->width = thisbox->items[z].width; } if(thisbox->type == DW_HORZ) { - tmp->yratio = ((float)((thisbox->items[z].height * thisbox->yratio)-((thisbox->items[z].pad*2)+(thisbox->pad*2))))/((float)(tmp->minheight-((thisbox->items[z].pad*2)+(thisbox->pad*2)))); + calcval = (float)(tmp->minheight-((thisbox->items[z].pad*2)+(thisbox->pad*2))); + if(calcval == 0.0) + tmp->yratio = thisbox->yratio; + else + tmp->yratio = ((float)((thisbox->items[z].height * thisbox->yratio)-((thisbox->items[z].pad*2)+(thisbox->pad*2))))/calcval; tmp->height = thisbox->items[z].height; } }