152 |
|
|
153 |
SCM_ASSERT_RANGE (SCM_ARG2, scm_long2num (n), |
SCM_ASSERT_RANGE (SCM_ARG2, scm_long2num (n), |
154 |
n > 0 && n <= SCM_UVECTOR_MAX_LENGTH); |
n > 0 && n <= SCM_UVECTOR_MAX_LENGTH); |
155 |
if ((v = (char *) SCM_MUST_MALLOC_TYPE_NUM (CTYPE, n)) == NULL) |
v = scm_gc_malloc (sizeof (CTYPE) * n, "vector"); |
|
return SCM_UNDEFINED; |
|
156 |
memcpy (v, data, n * sizeof (CTYPE)); |
memcpy (v, data, n * sizeof (CTYPE)); |
157 |
return scm_alloc_cell (SCM_MAKE_UVECTOR_TAG (n, UVECTTYPE), (scm_t_bits) v); |
return scm_alloc_cell (SCM_MAKE_UVECTOR_TAG (n, UVECTTYPE), (scm_t_bits) v); |
158 |
} |
} |
167 |
|
|
168 |
SCM_ASSERT_RANGE (SCM_ARG2, scm_long2num (n), |
SCM_ASSERT_RANGE (SCM_ARG2, scm_long2num (n), |
169 |
n > 0 && n <= SCM_UVECTOR_MAX_LENGTH); |
n > 0 && n <= SCM_UVECTOR_MAX_LENGTH); |
170 |
if ((v = (char *) SCM_MUST_MALLOC_TYPE_NUM (unsigned CTYPE, n)) == NULL) |
v = scm_gc_malloc (sizeof (unsigned CTYPE) * n, "vector"); |
|
return SCM_UNDEFINED; |
|
171 |
memcpy (v, data, n * sizeof (unsigned CTYPE)); |
memcpy (v, data, n * sizeof (unsigned CTYPE)); |
172 |
return scm_alloc_cell (SCM_MAKE_UVECTOR_TAG (n, UVECTTYPE2), (scm_t_bits) v); |
return scm_alloc_cell (SCM_MAKE_UVECTOR_TAG (n, UVECTTYPE2), (scm_t_bits) v); |
173 |
} |
} |