guile-commits
[Top][All Lists]
Advanced

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

[Guile-commits] GNU Guile branch, master, updated. v2.1.0-158-gc099201


From: Mark H Weaver
Subject: [Guile-commits] GNU Guile branch, master, updated. v2.1.0-158-gc099201
Date: Sat, 17 Aug 2013 03:15:36 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Guile".

http://git.savannah.gnu.org/cgit/guile.git/commit/?id=c099201da1de71652b9791fb0a3a863b6d3c355d

The branch, master has been updated
       via  c099201da1de71652b9791fb0a3a863b6d3c355d (commit)
       via  88cff2ef1bd0d11987f034d2e7dec10c89f5719d (commit)
       via  088cfb7d761b01a2620d78f10e8dbcaa07485a32 (commit)
      from  521c542199afa4f199746d5bbffc18a988cb30bc (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit c099201da1de71652b9791fb0a3a863b6d3c355d
Author: Mark H Weaver <address@hidden>
Date:   Fri Aug 16 23:10:14 2013 -0400

    In bytevector->uint-list et al, check that SIZE divides the bv length.
    
    Fixes <http://bugs.gnu.org/15100>.
    Reported by Göran Weinholt <address@hidden>.
    
    * libguile/bytevectors.c (INTEGERS_TO_LIST): Enforce the R6RS
      requirement that SIZE divides the bytevector length.
    
    * test-suite/tests/bytevectors.test: Add test.  Remove tests that
      assumes that this "divides" check is not enforced.

commit 88cff2ef1bd0d11987f034d2e7dec10c89f5719d
Merge: 521c542 088cfb7
Author: Mark H Weaver <address@hidden>
Date:   Fri Aug 16 23:05:34 2013 -0400

    Merge remote-tracking branch 'origin/stable-2.0'

-----------------------------------------------------------------------

Summary of changes:
 libguile/bytevectors.c            |   12 +++++++-----
 test-suite/tests/bytevectors.test |   13 ++++++++-----
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c
index 9093f49..f91b845 100644
--- a/libguile/bytevectors.c
+++ b/libguile/bytevectors.c
@@ -1116,20 +1116,22 @@ SCM_DEFINE (scm_bytevector_sint_set_x, 
"bytevector-sint-set!", 5, 0, 0,
                                                                        \
   SCM_VALIDATE_BYTEVECTOR (1, bv);                                     \
   SCM_VALIDATE_SYMBOL (2, endianness);                                 \
-  c_size = scm_to_uint (size);                                         \
+  c_size = scm_to_unsigned_integer (size, 1, (size_t) -1);             \
                                                                        \
   c_len = SCM_BYTEVECTOR_LENGTH (bv);                                  \
-  if (SCM_UNLIKELY (c_len == 0))                                       \
+  if (SCM_UNLIKELY (c_len % c_size != 0))                              \
+    scm_wrong_type_arg_msg                                             \
+      (FUNC_NAME, 0, size,                                             \
+       "an exact positive integer that divides the bytevector length");        
\
+  else if (SCM_UNLIKELY (c_len == 0))                                  \
     lst = SCM_EOL;                                                     \
-  else if (SCM_UNLIKELY (c_len < c_size))                              \
-    scm_out_of_range (FUNC_NAME, size);                                        
\
   else                                                                 \
     {                                                                  \
       const char *c_bv;                                                        
\
                                                                        \
       c_bv = (char *) SCM_BYTEVECTOR_CONTENTS (bv);                    \
                                                                        \
-      lst = scm_make_list (scm_from_uint (c_len / c_size),             \
+      lst = scm_make_list (scm_from_size_t (c_len / c_size),           \
                           SCM_UNSPECIFIED);                            \
       for (i = 0, pair = lst;                                          \
           i <= c_len - c_size;                                         \
diff --git a/test-suite/tests/bytevectors.test 
b/test-suite/tests/bytevectors.test
index 67fc680..28ccbf5 100644
--- a/test-suite/tests/bytevectors.test
+++ b/test-suite/tests/bytevectors.test
@@ -157,12 +157,15 @@
 
   (pass-if-exception "bytevector->sint-list [out-of-range]"
     exception:out-of-range
-    (bytevector->sint-list (make-bytevector 6) (endianness little) 8))
+    (bytevector->sint-list (make-bytevector 6) (endianness little) -1))
 
-  (pass-if "bytevector->sint-list [off-by-one]"
-    (equal? (bytevector->sint-list (make-bytevector 31 #xff)
-                                   (endianness little) 8)
-            '(-1 -1 -1)))
+  (pass-if-exception "bytevector->uint-list [out-of-range]"
+    exception:out-of-range
+    (bytevector->uint-list (make-bytevector 6) (endianness little) 0))
+
+  (pass-if-exception "bytevector->uint-list [word size doesn't divide length]"
+    exception:wrong-type-arg
+    (bytevector->uint-list (make-bytevector 6) (endianness little) 4))
 
   (pass-if "{sint,uint}-list->bytevector"
     (let ((b1 (sint-list->bytevector '(513 -253 513 513)


hooks/post-receive
-- 
GNU Guile



reply via email to

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