summaryrefslogtreecommitdiff
path: root/libguile/unif.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/unif.c')
-rw-r--r--libguile/unif.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/libguile/unif.c b/libguile/unif.c
index 84b532347..cf39d055e 100644
--- a/libguile/unif.c
+++ b/libguile/unif.c
@@ -1149,7 +1149,6 @@ SCM_DEFINE (scm_enclose_array, "enclose-array", 1, 0, 1,
#define FUNC_NAME s_scm_enclose_array
{
SCM axv, res, ra_inr;
- const char *c_axv;
scm_t_array_dim vdim, *s = &vdim;
int ndim, j, k, ninr, noutr;
@@ -1197,10 +1196,9 @@ SCM_DEFINE (scm_enclose_array, "enclose-array", 1, 0, 1,
SCM_I_ARRAY_DIMS (ra_inr)[k].inc = s[j].inc;
scm_c_string_set_x (axv, j, SCM_MAKE_CHAR (1));
}
- c_axv = scm_i_string_chars (axv);
for (j = 0, k = 0; k < noutr; k++, j++)
{
- while (c_axv[j])
+ while (!scm_i_string_ref (axv, j) == '\0')
j++;
SCM_I_ARRAY_DIMS (res)[k].lbnd = s[j].lbnd;
SCM_I_ARRAY_DIMS (res)[k].ubnd = s[j].ubnd;
@@ -2329,13 +2327,12 @@ scm_istr2bve (SCM str)
SCM res = vec;
scm_t_uint32 mask;
- size_t k, j;
- const char *c_str;
+ size_t k, j, p;
scm_t_uint32 *data;
data = scm_bitvector_writable_elements (vec, &handle, NULL, NULL, NULL);
- c_str = scm_i_string_chars (str);
+ p = 0;
for (k = 0; k < (len + 31) / 32; k++)
{
data[k] = 0L;
@@ -2343,7 +2340,7 @@ scm_istr2bve (SCM str)
if (j > 32)
j = 32;
for (mask = 1L; j--; mask <<= 1)
- switch (*c_str++)
+ switch (scm_i_string_ref (str, p++))
{
case '0':
break;