summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Llorens <daniel.llorens@bluewin.ch>2013-04-26 17:59:45 +0200
committerAndy Wingo <wingo@pobox.com>2014-01-27 21:48:03 +0100
commitd2053db7d8f6134f50bbd5102ddde7b72010dd97 (patch)
tree61d32a40fbcec62fe9cebe79d48a97b66babedc0
parent86263a20cd3f7ec1ade740c19ac47767e083d058 (diff)
downloadguile-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.c3
-rw-r--r--libguile/strings.c3
-rw-r--r--libguile/vectors.c8
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;
}