summaryrefslogtreecommitdiff
path: root/test-suite/tests/bytevectors.test
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2013-08-16 22:54:39 -0400
committerMark H Weaver <mhw@netris.org>2013-08-16 22:54:39 -0400
commit088cfb7d761b01a2620d78f10e8dbcaa07485a32 (patch)
treef1b59329d0d3713726e42aca62ffcacbe1d60b8b /test-suite/tests/bytevectors.test
parent8d5d0425ce10dcf035fbf717852938291261bd7e (diff)
downloadguile-088cfb7d761b01a2620d78f10e8dbcaa07485a32.tar.gz
Improved error checking in bytevector->uint-list and bytevector->sint-list.
Partially fixes <http://bugs.gnu.org/15100>. Reported by Göran Weinholt <goran@weinholt.se>. * libguile/bytevectors.c (INTEGERS_TO_LIST): Make sure SIZE isn't 0. Allow SIZE to be greater than the bytevector length, for consistency with allowing extra bytes at the end when the bytevector length is non-zero. Use scm_from_size_t instead of scm_from_uint. * test-suite/tests/bytevectors.test: Add tests. Remove a test that checks for an exception when SIZE is greater than the bytevector length.
Diffstat (limited to 'test-suite/tests/bytevectors.test')
-rw-r--r--test-suite/tests/bytevectors.test10
1 files changed, 9 insertions, 1 deletions
diff --git a/test-suite/tests/bytevectors.test b/test-suite/tests/bytevectors.test
index 67fc6801f..524ce86b5 100644
--- a/test-suite/tests/bytevectors.test
+++ b/test-suite/tests/bytevectors.test
@@ -155,9 +155,17 @@
(let ((b (make-bytevector 0)))
(null? (bytevector->uint-list b (endianness big) 2))))
+ (pass-if "bytevector->sint-list [length < word size]"
+ (let ((b (make-bytevector 1)))
+ (null? (bytevector->sint-list b (endianness big) 2))))
+
(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-exception "bytevector->uint-list [out-of-range]"
+ exception:out-of-range
+ (bytevector->uint-list (make-bytevector 6) (endianness little) 0))
(pass-if "bytevector->sint-list [off-by-one]"
(equal? (bytevector->sint-list (make-bytevector 31 #xff)