1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-01 12:20:26 +02:00

(scm_uniform_vector_ref, scm_array_set_x): For byvect, force

signed byte range checks by using scm_to_schar and scm_from_schar,
don't want to depend on signedness of C char.
This commit is contained in:
Kevin Ryde 2004-08-06 00:21:13 +00:00
parent 7f9ca7c3d7
commit bebf6a08af

View file

@ -1111,7 +1111,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_from_char (((char *) SCM_UVECTOR_BASE (v))[pos]); return scm_from_schar (((char *) SCM_UVECTOR_BASE (v))[pos]);
case scm_tc7_uvect: case scm_tc7_uvect:
return scm_from_ulong (((unsigned long *) SCM_VELTS (v))[pos]); return scm_from_ulong (((unsigned long *) SCM_VELTS (v))[pos]);
case scm_tc7_ivect: case scm_tc7_ivect:
@ -1273,8 +1273,8 @@ 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_from_char ((char) SCM_CHAR (obj)); obj = scm_from_schar ((char) SCM_CHAR (obj));
((char *) SCM_UVECTOR_BASE (v))[pos] = scm_to_char (obj); ((char *) SCM_UVECTOR_BASE (v))[pos] = scm_to_schar (obj);
break; break;
case scm_tc7_uvect: case scm_tc7_uvect:
((unsigned long *) SCM_UVECTOR_BASE (v))[pos] = scm_to_ulong (obj); ((unsigned long *) SCM_UVECTOR_BASE (v))[pos] = scm_to_ulong (obj);