summaryrefslogtreecommitdiff
path: root/libguile/bytevectors.c
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2014-11-12 00:40:47 -0500
committerMark H Weaver <mhw@netris.org>2014-11-12 00:50:38 -0500
commitae6f77ddfaf8e752589d9050c9e517cb1c52cbf0 (patch)
tree2b5ce44f15e5c494a0b5f1c0191295b75a26d99c /libguile/bytevectors.c
parent81d2c84674f03f9028f26474ab19d3d3f353881a (diff)
downloadguile-ae6f77ddfaf8e752589d9050c9e517cb1c52cbf0.tar.gz
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.
Diffstat (limited to 'libguile/bytevectors.c')
-rw-r--r--libguile/bytevectors.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c
index 9f6b6abf3..8f698d5ba 100644
--- a/libguile/bytevectors.c
+++ b/libguile/bytevectors.c
@@ -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);