diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-04-24 21:25:16 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-04-24 21:25:16 +0200 |
commit | 69298c79ab3da8164f9b5317be4ae1b2a75ab4dd (patch) | |
tree | 2df5af639fd360088dc2d417bf6dc25dbf89c46c | |
parent | 5aae3d344b9f362539f06d20ea5ca80a0c8b3a78 (diff) | |
parent | 3c53021357e9ce86f77422877e36cdc73761e05b (diff) | |
download | plan9front-69298c79ab3da8164f9b5317be4ae1b2a75ab4dd.tar.xz |
merge
-rw-r--r-- | sys/include/sat.h | 1 | ||||
-rw-r--r-- | sys/src/cmd/forp/cvt.c | 4 | ||||
-rw-r--r-- | sys/src/cmd/forp/logic.c | 3 | ||||
-rw-r--r-- | sys/src/libsat/satadd.c | 16 | ||||
-rw-r--r-- | sys/src/libsat/satrange.c | 1 |
5 files changed, 23 insertions, 2 deletions
diff --git a/sys/include/sat.h b/sys/include/sat.h index 6251b43ae..416241f59 100644 --- a/sys/include/sat.h +++ b/sys/include/sat.h @@ -106,3 +106,4 @@ int satval(SATSolve *, int); void satfree(SATSolve *); void satreset(SATSolve *); int satget(SATSolve *, int, int *, int); +void satvafix(va_list); diff --git a/sys/src/cmd/forp/cvt.c b/sys/src/cmd/forp/cvt.c index de5dccba9..f0b9308fd 100644 --- a/sys/src/cmd/forp/cvt.c +++ b/sys/src/cmd/forp/cvt.c @@ -323,8 +323,8 @@ optern(Node *rn, Node *n1, Node *n2, Node *n3, uint sz) uint m; int i, a, b, q; - m = n1->size; - if(n2->size > m) m = n2->size; + m = n2->size; + if(n3->size > m) m = n3->size; if(m > sz) m = sz; nodevars(rn, m); q = tologic(n1); diff --git a/sys/src/cmd/forp/logic.c b/sys/src/cmd/forp/logic.c index b266e3bca..542065074 100644 --- a/sys/src/cmd/forp/logic.c +++ b/sys/src/cmd/forp/logic.c @@ -46,6 +46,7 @@ satandv(SATSolve *sat, ...) va_list va; va_start(va, sat); + satvafix(va); r = satand1(sat, (int*)va, -1); va_end(va); return r; @@ -90,6 +91,7 @@ satorv(SATSolve *sat, ...) int r; va_start(va, sat); + satvafix(va); r = sator1(sat, (int*)va, -1); va_end(va); return r; @@ -267,6 +269,7 @@ satlogicv(SATSolve *sat, u64int op, ...) int r; va_start(va, op); + satvafix(va); r = satlogic1(sat, op, (int*)va, -1); va_end(va); return r; diff --git a/sys/src/libsat/satadd.c b/sys/src/libsat/satadd.c index 3a0cf0c3a..e10dd8346 100644 --- a/sys/src/libsat/satadd.c +++ b/sys/src/libsat/satadd.c @@ -217,6 +217,21 @@ satadd1(SATSolve *s, int *a, int n) return s; } +void +satvafix(va_list va) +{ + int *d; + uintptr *s; + + if(sizeof(int)==sizeof(uintptr)) return; + d = (int *) va; + s = (uintptr *) va; + do + *d++ = *s; + while((int)*s++ != 0); + +} + SATSolve * sataddv(SATSolve *s, ...) { @@ -224,6 +239,7 @@ sataddv(SATSolve *s, ...) va_start(va, s); /* horrible hack */ + satvafix(va); s = satadd1(s, (int*)va, -1); va_end(va); return s; diff --git a/sys/src/libsat/satrange.c b/sys/src/libsat/satrange.c index 76caa5713..c202a8fc1 100644 --- a/sys/src/libsat/satrange.c +++ b/sys/src/libsat/satrange.c @@ -62,6 +62,7 @@ satrangev(SATSolve *s, int min, int max, ...) va_start(va, max); /* horrible hack */ + satvafix(va); s = satrange1(s, (int*)va, -1, min, max); va_end(va); return s; |