mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-01 04:10:18 +02:00
scm_to_ipv6 uses scm_to_mpz
* libguile/socket.c (scm_to_ipv6): Use scm_to_mpz.
This commit is contained in:
parent
e78bcdc29a
commit
a0765f564a
1 changed files with 11 additions and 5 deletions
|
@ -255,10 +255,16 @@ scm_to_ipv6 (uint8_t dst[16], SCM src)
|
||||||
else if (SCM_BIGP (src))
|
else if (SCM_BIGP (src))
|
||||||
{
|
{
|
||||||
size_t count;
|
size_t count;
|
||||||
|
mpz_t z;
|
||||||
|
|
||||||
if ((mpz_sgn (SCM_I_BIG_MPZ (src)) < 0)
|
mpz_init (z);
|
||||||
|| mpz_sizeinbase (SCM_I_BIG_MPZ (src), 2) > 128)
|
scm_to_mpz (src, z);
|
||||||
scm_out_of_range (NULL, src);
|
|
||||||
|
if (mpz_sgn (z) < 0 || mpz_sizeinbase (z, 2) > 128)
|
||||||
|
{
|
||||||
|
mpz_clear (z);
|
||||||
|
scm_out_of_range (NULL, src);
|
||||||
|
}
|
||||||
|
|
||||||
memset (dst, 0, 16);
|
memset (dst, 0, 16);
|
||||||
mpz_export (dst,
|
mpz_export (dst,
|
||||||
|
@ -267,8 +273,8 @@ scm_to_ipv6 (uint8_t dst[16], SCM src)
|
||||||
16, /* chunks are 16 bytes long */
|
16, /* chunks are 16 bytes long */
|
||||||
1, /* big-endian byte ordering */
|
1, /* big-endian byte ordering */
|
||||||
0, /* "nails" -- leading unused bits per chunk */
|
0, /* "nails" -- leading unused bits per chunk */
|
||||||
SCM_I_BIG_MPZ (src));
|
z);
|
||||||
scm_remember_upto_here_1 (src);
|
mpz_clear (z);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
scm_wrong_type_arg_msg ("scm_to_ipv6", 0, src, "integer");
|
scm_wrong_type_arg_msg ("scm_to_ipv6", 0, src, "integer");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue