diff options
author | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2000-11-23 08:59:22 +0000 |
---|---|---|
committer | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2000-11-23 08:59:22 +0000 |
commit | 9377887701ecd64970fb8c65929ab2e8516ca929 (patch) | |
tree | b17162c36e4dd8be771edab74f13b6e1e37b9ed3 /libguile/unif.c | |
parent | d7cf43257826796a0503e33b162cb7424a65bdc4 (diff) | |
download | guile-9377887701ecd64970fb8c65929ab2e8516ca929.tar.gz |
* Deprecated SCM_SETLENGTH.
Diffstat (limited to 'libguile/unif.c')
-rw-r--r-- | libguile/unif.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/libguile/unif.c b/libguile/unif.c index a4119be8e..77f9e7a42 100644 --- a/libguile/unif.c +++ b/libguile/unif.c @@ -162,8 +162,19 @@ scm_make_uve (long k, SCM prot) if (SCM_EQ_P (prot, SCM_BOOL_T)) { - i = sizeof (long) * ((k + SCM_LONG_BIT - 1) / SCM_LONG_BIT); - type = scm_tc7_bvect; + SCM_NEWCELL (v); + if (k > 0) + { + i = sizeof (long) * ((k + SCM_LONG_BIT - 1) / SCM_LONG_BIT); + SCM_SETCHARS (v, (char *) scm_must_malloc (i, "vector")); + SCM_SET_BITVECTOR_LENGTH (v, k); + } + else + { + SCM_SETCHARS (v, 0); + SCM_SET_BITVECTOR_LENGTH (v, 0); + } + return v; } else if (SCM_CHARP (prot) && (SCM_CHAR (prot) == '\0')) { @@ -173,7 +184,7 @@ scm_make_uve (long k, SCM prot) else if (SCM_CHARP (prot)) { i = sizeof (char) * k; - type = scm_tc7_string; + return scm_makstr (i, 0); } else if (SCM_INUMP (prot)) { @@ -229,7 +240,7 @@ scm_make_uve (long k, SCM prot) SCM_NEWCELL (v); SCM_DEFER_INTS; SCM_SETCHARS (v, (char *) scm_must_malloc (i ? i : 1, "vector")); - SCM_SETLENGTH (v, k, type); + SCM_SET_UVECTOR_LENGTH (v, k, type); SCM_ALLOW_INTS; return v; } |