diff options
author | Daniel Llorens <daniel.llorens@bluewin.ch> | 2013-04-26 17:59:45 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2014-01-27 21:48:03 +0100 |
commit | d2053db7d8f6134f50bbd5102ddde7b72010dd97 (patch) | |
tree | 61d32a40fbcec62fe9cebe79d48a97b66babedc0 | |
parent | 86263a20cd3f7ec1ade740c19ac47767e083d058 (diff) | |
download | guile-d2053db7d8f6134f50bbd5102ddde7b72010dd97.tar.gz |
Bounds error in vector_handle_ref/set is implementation error
* libguile/vectors.c: bounds are already checked unless impl is called
directly, so don't check again.
* libguile/strings.c, libguile/bitvectors.c: fix comments.
-rw-r--r-- | libguile/bitvectors.c | 3 | ||||
-rw-r--r-- | libguile/strings.c | 3 | ||||
-rw-r--r-- | libguile/vectors.c | 8 |
3 files changed, 5 insertions, 9 deletions
diff --git a/libguile/bitvectors.c b/libguile/bitvectors.c index 3a88731b2..9817e90ab 100644 --- a/libguile/bitvectors.c +++ b/libguile/bitvectors.c @@ -852,8 +852,7 @@ scm_istr2bve (SCM str) return res; } -/* FIXME: We know that bitvector is such, so can skip the checks in - scm_c_bitvector_... */ +/* FIXME: We know that bitvector is such, so can skip the checks */ static SCM bitvector_handle_ref (SCM bitvector, size_t pos) { diff --git a/libguile/strings.c b/libguile/strings.c index 3952b205d..9ca1d3333 100644 --- a/libguile/strings.c +++ b/libguile/strings.c @@ -2460,8 +2460,7 @@ scm_i_get_substring_spec (size_t len, *cend = scm_to_unsigned_integer (end, *cstart, len); } -/* FIXME: We know that bitvector is such, so can skip the checks in - scm_c_string_... */ +/* FIXME: We know that string is such, so can skip checks */ static SCM string_handle_ref (SCM string, size_t index) { diff --git a/libguile/vectors.c b/libguile/vectors.c index 19a0392b2..08fac3bbd 100644 --- a/libguile/vectors.c +++ b/libguile/vectors.c @@ -39,7 +39,7 @@ #include "libguile/bdw-gc.h" - +#include <assert.h> #define VECTOR_MAX_LENGTH (SCM_T_BITS_MAX >> 8) @@ -436,16 +436,14 @@ SCM_DEFINE (scm_vector_move_right_x, "vector-move-right!", 5, 0, 0, static SCM vector_handle_ref (SCM vector, size_t idx) { - if (idx >= SCM_I_VECTOR_LENGTH (vector)) - scm_out_of_range ("vector-handle-ref", scm_from_size_t (idx)); + assert (idx < SCM_I_VECTOR_LENGTH (vector)); return SCM_I_VECTOR_WELTS(vector)[idx]; } static void vector_handle_set (SCM vector, size_t idx, SCM val) { - if (idx >= SCM_I_VECTOR_LENGTH (vector)) - scm_out_of_range ("vector-handle-set!", scm_from_size_t (idx)); + assert (idx < SCM_I_VECTOR_LENGTH (vector)); SCM_I_VECTOR_WELTS(vector)[idx] = val; } |