mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 11:40:18 +02:00
Fix bytevector-fill! to accept fill arguments greater than 127.
Fixes <http://bugs.gnu.org/19027>. * libguile/bytevectors.c (scm_bytevector_fill_x): Accept fill arguments between -128 and 255. * test-suite/tests/bytevectors.test ("2.2 General Operations"): Add tests.
This commit is contained in:
parent
81d2c84674
commit
ae6f77ddfa
2 changed files with 21 additions and 1 deletions
|
@ -537,9 +537,14 @@ SCM_DEFINE (scm_bytevector_fill_x, "bytevector-fill!", 2, 0, 0,
|
|||
{
|
||||
size_t c_len, i;
|
||||
scm_t_uint8 *c_bv, c_fill;
|
||||
int value;
|
||||
|
||||
SCM_VALIDATE_BYTEVECTOR (1, bv);
|
||||
c_fill = scm_to_int8 (fill);
|
||||
|
||||
value = scm_to_int (fill);
|
||||
if (SCM_UNLIKELY ((value < -128) || (value > 255)))
|
||||
scm_out_of_range (FUNC_NAME, fill);
|
||||
c_fill = (scm_t_uint8) value;
|
||||
|
||||
c_len = SCM_BYTEVECTOR_LENGTH (bv);
|
||||
c_bv = (scm_t_uint8 *) SCM_BYTEVECTOR_CONTENTS (bv);
|
||||
|
|
|
@ -46,6 +46,21 @@
|
|||
(not (bytevector=? (make-bytevector 20 7)
|
||||
(make-bytevector 20 0)))))
|
||||
|
||||
;; This failed prior to Guile 2.0.12.
|
||||
;; See <http://bugs.gnu.org/19027>.
|
||||
(pass-if-equal "bytevector-fill! with fill 255"
|
||||
#vu8(255 255 255 255)
|
||||
(let ((bv (make-bytevector 4)))
|
||||
(bytevector-fill! bv 255)
|
||||
bv))
|
||||
|
||||
;; This is a Guile-specific extension.
|
||||
(pass-if-equal "bytevector-fill! with fill -128"
|
||||
#vu8(128 128 128 128)
|
||||
(let ((bv (make-bytevector 4)))
|
||||
(bytevector-fill! bv -128)
|
||||
bv))
|
||||
|
||||
(pass-if "bytevector-copy! overlapping"
|
||||
;; See <http://debbugs.gnu.org/10070>.
|
||||
(let ((b (u8-list->bytevector '(1 2 3 4 5 6 7 8))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue