guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 68/69: scm_to_ipv6 uses scm_to_mpz


From: Andy Wingo
Subject: [Guile-commits] 68/69: scm_to_ipv6 uses scm_to_mpz
Date: Fri, 7 Jan 2022 08:27:31 -0500 (EST)

wingo pushed a commit to branch wip-inline-digits
in repository guile.

commit eec9f424e1b636ffeb65e2f3445b9816751d63e1
Author: Andy Wingo <wingo@pobox.com>
AuthorDate: Fri Jan 7 13:39:33 2022 +0100

    scm_to_ipv6 uses scm_to_mpz
    
    * libguile/socket.c (scm_to_ipv6): Use scm_to_mpz.
---
 libguile/socket.c | 16 +++++++++++-----
 1 file 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");



reply via email to

[Prev in Thread] Current Thread [Next in Thread]