diff options
-rw-r--r-- | libguile/ramap.c | 16 | ||||
-rw-r--r-- | libguile/unif.c | 2 |
2 files changed, 17 insertions, 1 deletions
diff --git a/libguile/ramap.c b/libguile/ramap.c index 370dfd97a..ec903ece4 100644 --- a/libguile/ramap.c +++ b/libguile/ramap.c @@ -160,6 +160,7 @@ scm_ra_matchp (ra0, ras) return 0; case scm_tc7_vector: case scm_tc7_string: + case scm_tc7_byvect: case scm_tc7_bvect: case scm_tc7_uvect: case scm_tc7_ivect: @@ -191,6 +192,7 @@ scm_ra_matchp (ra0, ras) return 0; case scm_tc7_vector: case scm_tc7_string: + case scm_tc7_byvect: case scm_tc7_bvect: case scm_tc7_uvect: case scm_tc7_ivect: @@ -435,6 +437,15 @@ scm_array_fill_int (ra, fill, ignore) for (i = base; n--; i += inc) SCM_CHARS (ra)[i] = SCM_ICHR (fill); break; + case scm_tc7_byvect: + if (SCM_ICHRP (fill)) + fill = SCM_MAKINUM ((char) SCM_ICHR (fill)); + SCM_ASRTGO (SCM_INUMP (fill) + && -128 <= SCM_INUM (fill) && SCM_INUM (fill) < 128, + badarg2); + for (i = base; n--; i += inc) + SCM_CHARS (ra)[i] = SCM_INUM (fill); + break; case scm_tc7_bvect: { long *ve = (long *) SCM_VELTS (ra); @@ -552,6 +563,7 @@ racp (src, dst) scm_array_set_x (dst, scm_cvref (src, i_s, SCM_UNDEFINED), SCM_MAKINUM (i_d)); break; case scm_tc7_string: + case scm_tc7_byvect: if (scm_tc7_string != SCM_TYP7 (dst)) goto gencase; for (; n-- > 0; i_s += inc_s, i_d += inc_d) @@ -1816,6 +1828,7 @@ scm_array_index_map_x (ra, proc) return SCM_UNSPECIFIED; } case scm_tc7_string: + case scm_tc7_byvect: case scm_tc7_bvect: case scm_tc7_uvect: case scm_tc7_ivect: @@ -1915,6 +1928,7 @@ raeql_1 (ra0, as_equal, ra1) } return 1; case scm_tc7_string: + case scm_tc7_byvect: { char *v0 = SCM_CHARS (ra0) + i0; char *v1 = SCM_CHARS (ra1) + i1; @@ -2067,6 +2081,7 @@ scm_array_equal_p (ra0, ra1) goto callequal; case scm_tc7_bvect: case scm_tc7_string: + case scm_tc7_byvect: case scm_tc7_uvect: case scm_tc7_ivect: case scm_tc7_fvect: @@ -2085,6 +2100,7 @@ scm_array_equal_p (ra0, ra1) goto callequal; case scm_tc7_bvect: case scm_tc7_string: + case scm_tc7_byvect: case scm_tc7_uvect: case scm_tc7_ivect: case scm_tc7_fvect: diff --git a/libguile/unif.c b/libguile/unif.c index 4daea2bf4..fc9879a89 100644 --- a/libguile/unif.c +++ b/libguile/unif.c @@ -1284,7 +1284,7 @@ scm_array_set_x (v, obj, args) break; case scm_tc7_byvect: if (SCM_ICHRP (obj)) - obj = SCM_MAKINUM (SCM_ICHR (obj)); + obj = SCM_MAKINUM ((char) SCM_ICHR (obj)); SCM_ASRTGO (SCM_INUMP (obj), badobj); ((char *)SCM_CHARS (v))[pos] = SCM_INUM (obj); break; |