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
parent d0e38df6bf
commit 2b922457a5
5 changed files with 5 additions and 6 deletions

View File

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

View File

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

View File

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

View File

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

View File

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