diff options
author | Andy Wingo <wingo@pobox.com> | 2022-01-07 13:39:33 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2022-01-13 09:37:17 +0100 |
commit | a0765f564afd56c7a42385d2a3790b3ec2295e3f (patch) | |
tree | 7b0e7d9ad8c2a51feacbd24adec29cc343318ee4 | |
parent | e78bcdc29a196b5fec5fa2c4c6ad8576651de72e (diff) | |
download | guile-a0765f564afd56c7a42385d2a3790b3ec2295e3f.tar.gz |
scm_to_ipv6 uses scm_to_mpz
* libguile/socket.c (scm_to_ipv6): Use scm_to_mpz.
-rw-r--r-- | libguile/socket.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/libguile/socket.c b/libguile/socket.c index e9c658ed7..77cdd74ef 100644 --- a/libguile/socket.c +++ b/libguile/socket.c @@ -255,10 +255,16 @@ scm_to_ipv6 (uint8_t dst[16], SCM src) else if (SCM_BIGP (src)) { size_t count; + mpz_t z; - if ((mpz_sgn (SCM_I_BIG_MPZ (src)) < 0) - || mpz_sizeinbase (SCM_I_BIG_MPZ (src), 2) > 128) - scm_out_of_range (NULL, src); + mpz_init (z); + scm_to_mpz (src, z); + + if (mpz_sgn (z) < 0 || mpz_sizeinbase (z, 2) > 128) + { + mpz_clear (z); + scm_out_of_range (NULL, src); + } memset (dst, 0, 16); mpz_export (dst, @@ -267,8 +273,8 @@ scm_to_ipv6 (uint8_t dst[16], SCM src) 16, /* chunks are 16 bytes long */ 1, /* big-endian byte ordering */ 0, /* "nails" -- leading unused bits per chunk */ - SCM_I_BIG_MPZ (src)); - scm_remember_upto_here_1 (src); + z); + mpz_clear (z); } else scm_wrong_type_arg_msg ("scm_to_ipv6", 0, src, "integer"); |