aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/hoc/code.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/hoc/code.c')
-rw-r--r--src/cmd/hoc/code.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/cmd/hoc/code.c b/src/cmd/hoc/code.c
index 26762452..7ed3ed1e 100644
--- a/src/cmd/hoc/code.c
+++ b/src/cmd/hoc/code.c
@@ -38,6 +38,11 @@ initcode(void)
}
void
+nop(void)
+{
+}
+
+void
push(Datum d)
{
if (stackp >= &stack[NSTACK])
@@ -558,10 +563,17 @@ diveq(void)
}
void
+ppush(Datum *d)
+{
+ push(*d);
+}
+
+void
modeq(void)
{
Datum d1, d2;
long x;
+
d1 = pop();
d2 = pop();
if (d1.sym->type != VAR && d1.sym->type != UNDEF)
@@ -570,9 +582,12 @@ modeq(void)
/* d2.val = d1.sym->u.val %= d2.val; */
x = d1.sym->u.val;
x %= (long) d2.val;
- d2.val = d1.sym->u.val = x;
+ d2.val = x;
+ d1.sym->u.val = x;
d1.sym->type = VAR;
- push(d2);
+
+ /* push(d2) generates a compiler error on Linux w. gcc 2.95.4 */
+ ppush(&d2);
}
void