summaryrefslogtreecommitdiff
path: root/sys/src/libsat
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2018-04-24 12:20:07 +0100
committeraiju <devnull@localhost>2018-04-24 12:20:07 +0100
commit29f03ba4e74ec58b87e3e6470aadfb58ee804f48 (patch)
treedf596c512fd8add63ae327c5fd12b1f4f766eb36 /sys/src/libsat
parent8666ec6b555ec21e8c81089148527913febc7e53 (diff)
libsat, forp: fix va_list hack on amd64
Diffstat (limited to 'sys/src/libsat')
-rw-r--r--sys/src/libsat/satadd.c16
-rw-r--r--sys/src/libsat/satrange.c1
2 files changed, 17 insertions, 0 deletions
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;