Fix five latent bugs surfaced while porting to WASM

These bugs all exist in stock Magic but were tolerated by the K&R-loose
native build. The strict WASM call_indirect type checks turned them up.

* cif/CIFhier.c: ASSERT in cifFlatMaskHints accessed
  oldproprec->prop_value.prop_type, but prop_type is a top-level member
  of PropertyRecord. Changed to oldproprec->prop_type.

* extflat/EFargs.c: efLoadSearchPath was assigning a pointer to a
  string literal ("." in RO data), which callers later try to free or
  StrDup. Replaced with StrDup(path, ".") so the pointer always lives
  on the heap.

* router/rtrVia.c: rtrFollowName called RtrMilestonePrint("#"), but
  the function takes no arguments.

* sim/SimSelect.c: SimAddLabels called DBWLabelChanged with five
  arguments, but its real signature is (CellDef *, Label *, int).
  Replaced with the equivalent DBWAreaChanged call.

* windows/windView.c: extern declaration of DBMovePoint had return
  type void, but the function actually returns bool.
This commit is contained in:
Intubun 2026-05-04 13:28:42 +02:00 committed by R. Timothy Edwards
parent bdc0325901
commit 537d370536
5 changed files with 5 additions and 6 deletions

View File

@ -284,7 +284,7 @@ cifFlatMaskHints(
oldproprec = (PropertyRecord *)DBPropGet(mhd->mh_def, name, &propfound);
if (propfound)
{
ASSERT(oldproprec->prop_value.prop_type == PROPERTY_TYPE_PLANE,
ASSERT(oldproprec->prop_type == PROPERTY_TYPE_PLANE,
"cifFlatMaskHints");
plane = oldproprec->prop_value.prop_plane;
}

View File

@ -367,7 +367,7 @@ efLoadSearchPath(path)
PaVisitFiles(DOT_MAGIC_PATH, ".magicrc", pv);
PaVisitFree(pv);
if (*path == NULL)
*path = ".";
StrDup(path, ".");
}
int

View File

@ -159,7 +159,7 @@ rtrFollowName(name, firstInNet, area)
{
if ( firstInNet )
{
RtrMilestonePrint("#");
RtrMilestonePrint();
(void) DBSrLabelLoc(EditCellUse, name, rtrFollowLocFunc, (ClientData) area);
}
return 0;

View File

@ -640,8 +640,7 @@ SimAddLabels(
pos = SimPutLabel(rootuse, &selectBox, GEO_CENTER,
current->tl_simLabel, TT_SPACE);
DBReComputeBbox(rootuse);
DBWLabelChanged(rootuse, current->tl_simLabel, &selectBox,
pos, DBW_ALLWINDOWS);
DBWAreaChanged(rootuse, &selectBox, DBW_ALLWINDOWS, &DBAllButSpaceBits);
}
}

View File

@ -316,7 +316,7 @@ void
WindTranslate(origx, origy)
int origx, origy;
{
extern void DBMovePoint();
extern bool DBMovePoint();
MagWindow *w2;
Rect newArea;