mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-25 14:10:22 +02:00
(scm_uniform_vector_ref): For byvect, force signed char so as
not to depend on C char signedness. (scm_array_set_x): For byvect, add range check, per array-fill!.
This commit is contained in:
parent
d6c803c761
commit
29da36e4ab
1 changed files with 4 additions and 2 deletions
|
@ -1163,7 +1163,7 @@ SCM_DEFINE (scm_uniform_vector_ref, "uniform-vector-ref", 2, 0, 0,
|
||||||
case scm_tc7_string:
|
case scm_tc7_string:
|
||||||
return SCM_MAKE_CHAR (SCM_STRING_UCHARS (v)[pos]);
|
return SCM_MAKE_CHAR (SCM_STRING_UCHARS (v)[pos]);
|
||||||
case scm_tc7_byvect:
|
case scm_tc7_byvect:
|
||||||
return SCM_MAKINUM (((char *) SCM_UVECTOR_BASE (v))[pos]);
|
return SCM_MAKINUM (((signed char *) SCM_UVECTOR_BASE (v))[pos]);
|
||||||
case scm_tc7_uvect:
|
case scm_tc7_uvect:
|
||||||
return scm_ulong2num (((unsigned long *) SCM_VELTS (v))[pos]);
|
return scm_ulong2num (((unsigned long *) SCM_VELTS (v))[pos]);
|
||||||
case scm_tc7_ivect:
|
case scm_tc7_ivect:
|
||||||
|
@ -1326,8 +1326,10 @@ SCM_DEFINE (scm_array_set_x, "array-set!", 2, 0, 1,
|
||||||
break;
|
break;
|
||||||
case scm_tc7_byvect:
|
case scm_tc7_byvect:
|
||||||
if (SCM_CHARP (obj))
|
if (SCM_CHARP (obj))
|
||||||
obj = SCM_MAKINUM ((char) SCM_CHAR (obj));
|
obj = SCM_MAKINUM ((signed char) SCM_CHAR (obj));
|
||||||
SCM_ASRTGO (SCM_INUMP (obj), badobj);
|
SCM_ASRTGO (SCM_INUMP (obj), badobj);
|
||||||
|
SCM_ASSERT_RANGE (SCM_ARG2, obj,
|
||||||
|
-128 <= SCM_INUM (obj) && SCM_INUM (obj) < 128);
|
||||||
((char *) SCM_UVECTOR_BASE (v))[pos] = SCM_INUM (obj);
|
((char *) SCM_UVECTOR_BASE (v))[pos] = SCM_INUM (obj);
|
||||||
break;
|
break;
|
||||||
case scm_tc7_uvect:
|
case scm_tc7_uvect:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue