Corrected ext2sim.c calls to hierAP and others using "scale" and

declaring it to be an integer when it is actually a float.  This
will cause magic to crash when using, e.g., "ext2sim -f su".
This commit is contained in:
Tim Edwards 2020-02-11 10:21:36 -05:00
parent 2ca9511152
commit 06eef6e324
2 changed files with 12 additions and 8 deletions

View File

@ -1078,7 +1078,7 @@ simdevVisit(dev, hierName, scale, trans)
{ {
putc(' ', esSimF); putc(' ', esSimF);
simdevSubstrate(hierName, subnode->efnode_name->efnn_hier, simdevSubstrate(hierName, subnode->efnode_name->efnn_hier,
dev->dev_type, 0, FALSE, esSimF); dev->dev_type, 0.0, FALSE, esSimF);
} }
GeoTransRect(trans, &dev->dev_rect, &r); GeoTransRect(trans, &dev->dev_rect, &r);
@ -1196,7 +1196,8 @@ int
simdevSubstrate( prefix, suffix, type, scale, doAP, outf) simdevSubstrate( prefix, suffix, type, scale, doAP, outf)
HierName *prefix; HierName *prefix;
HierName *suffix; HierName *suffix;
int type, scale; int type;
float scale;
bool doAP; bool doAP;
FILE *outf; FILE *outf;
{ {
@ -1264,7 +1265,8 @@ FILE *outf;
bool simnAP(node, resClass, scale, outf) bool simnAP(node, resClass, scale, outf)
EFNode *node; EFNode *node;
int resClass, scale; int resClass;
float scale;
FILE *outf; FILE *outf;
{ {
int a, p; int a, p;
@ -1277,8 +1279,8 @@ FILE *outf;
return FALSE; return FALSE;
} }
markVisited((nodeClient *)node->efnode_client, resClass); markVisited((nodeClient *)node->efnode_client, resClass);
a = node->efnode_pa[resClass].pa_area*scale*scale; a = (int)(node->efnode_pa[resClass].pa_area*scale*scale);
p = node->efnode_pa[resClass].pa_perim*scale; p = (int)(node->efnode_pa[resClass].pa_perim*scale);
if ( a < 0 ) a = 0; if ( a < 0 ) a = 0;
if ( p < 0 ) p = 0; if ( p < 0 ) p = 0;
fprintf(outf,"A_%d,P_%d", a, p); fprintf(outf,"A_%d,P_%d", a, p);
@ -1288,7 +1290,8 @@ FILE *outf;
bool simnAPHier(dterm, hierName, resClass, scale, outf) bool simnAPHier(dterm, hierName, resClass, scale, outf)
DevTerm *dterm; DevTerm *dterm;
HierName *hierName; HierName *hierName;
int resClass, scale; int resClass;
float scale;
FILE *outf; FILE *outf;
{ {
EFNode *node = dterm->dterm_node; EFNode *node = dterm->dterm_node;
@ -1308,8 +1311,8 @@ bool simnAPHier(dterm, hierName, resClass, scale, outf)
return FALSE; return FALSE;
} }
markVisited((nodeClientHier *)node->efnode_client, resClass); markVisited((nodeClientHier *)node->efnode_client, resClass);
a = node->efnode_pa[resClass].pa_area*scale*scale; a = (int)(node->efnode_pa[resClass].pa_area*scale*scale);
p = node->efnode_pa[resClass].pa_perim*scale; p = (int)(node->efnode_pa[resClass].pa_perim*scale);
if ( a < 0 ) a = 0; if ( a < 0 ) a = 0;
if ( p < 0 ) p = 0; if ( p < 0 ) p = 0;
fprintf(outf,"A_%d,P_%d", a, p); fprintf(outf,"A_%d,P_%d", a, p);

View File

@ -372,6 +372,7 @@ GrTCairoPlotSVG (char *filename, MagWindow *mw)
(double)screenw, (double)screenh); (double)screenw, (double)screenh);
cairo_svg_surface_restrict_to_version(tcairodata->surface, cairo_svg_surface_restrict_to_version(tcairodata->surface,
CAIRO_SVG_VERSION_1_2); CAIRO_SVG_VERSION_1_2);
tcairodata->context = cairo_create(tcairodata->surface); tcairodata->context = cairo_create(tcairodata->surface);
WindRedisplay(mw); WindRedisplay(mw);
WindUpdate(); WindUpdate();