summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-01-23 06:45:48 -0800
committerKaz Kylheku <kaz@kylheku.com>2019-01-23 06:45:48 -0800
commitf64d0bb5e0bfff833936d63849f86510a2328fee (patch)
tree8ee068483ea05129096a8e82a7c240d2f5cb2908
parent60e58b45da4926490e21cdfd7bfe9c8d48832f70 (diff)
downloadtxr-f64d0bb5e0bfff833936d63849f86510a2328fee.tar.gz
txr-f64d0bb5e0bfff833936d63849f86510a2328fee.tar.bz2
txr-f64d0bb5e0bfff833936d63849f86510a2328fee.zip
sysif: use double-intptr function from arith.
* arith.c (bignum_dbl_ipt): Change internal function to external linkage. * arith.h (bignum_dbl_ipt): Conditionally declared. * sysif.c (num_off_t): Use bignum_dbl_ipt instead of open-coding exactly the same thing that bignum_dbl_ipt does. Abort is changed to same internal_error as in off_t_num.
-rw-r--r--arith.c2
-rw-r--r--arith.h3
-rw-r--r--sysif.c6
3 files changed, 6 insertions, 5 deletions
diff --git a/arith.c b/arith.c
index 62b53618..e45ad050 100644
--- a/arith.c
+++ b/arith.c
@@ -154,7 +154,7 @@ int num_to_buffer(val num, mem_t *buf, int bytes)
#if HAVE_DOUBLE_INTPTR_T
-static val bignum_dbl_ipt(double_intptr_t di)
+val bignum_dbl_ipt(double_intptr_t di)
{
val n = make_bignum();
mp_set_double_intptr(mp(n), di);
diff --git a/arith.h b/arith.h
index 22c8bbe2..919de83c 100644
--- a/arith.h
+++ b/arith.h
@@ -33,6 +33,9 @@ val num_from_buffer(mem_t *buf, int bytes);
int num_to_buffer(val num, mem_t *buf, int bytes);
int highest_bit(int_ptr_t n);
val normalize(val bignum);
+#if HAVE_DOUBLE_INTPTR_T
+val bignum_dbl_ipt(double_intptr_t di);
+#endif
val in_int_ptr_range(val bignum);
ucnum c_unum(val num);
val unum(ucnum u);
diff --git a/sysif.c b/sysif.c
index 9de6e12d..43f8fe80 100644
--- a/sysif.c
+++ b/sysif.c
@@ -1351,11 +1351,9 @@ val num_off_t(off_t off)
} else {
#if HAVE_DOUBLE_INTPTR_T
if (sizeof (off_t) <= sizeof (double_intptr_t)) {
- val n = make_bignum();
- mp_set_double_intptr(mp(n), off);
- return n;
+ return bignum_dbl_ipt(off);
} else {
- abort();
+ internal_error("portme: unsupported off_t size");
}
#else
#error port me!