Re-write address arithmetic in gm2-libs/SArgs.mod:GetArg
to avoid (void *) computation. mc treats ADDRESS as (char *)
but does not cast user type (PtrToChar) to (char *) when
performing address arithmetic.
gcc/m2/ChangeLog:
PR modula2/113848
* gm2-libs/SArgs.mod (GetArg): Re-write address arithmetic
to avoid (void *) computation.
Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
PROCEDURE GetArg (VAR s: String; n: CARDINAL) : BOOLEAN ;
VAR
i : INTEGER ;
+ a : ADDRESS ;
ppc: PtrToPtrToChar ;
BEGIN
i := VAL (INTEGER, n) ;
IF i < GetArgC ()
THEN
- ppc := ADDRESS (ADDRESS (GetArgV ()) + (n * TSIZE (PtrToChar))) ;
+ a := ADDRESS (GetArgV ()) ;
+ INC (a, n * TSIZE (PtrToChar)) ;
+ ppc := a ;
s := InitStringCharStar (ppc^) ;
RETURN TRUE
ELSE