summaryrefslogtreecommitdiff
path: root/libguile/unif.c
diff options
context:
space:
mode:
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2000-11-23 08:59:22 +0000
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2000-11-23 08:59:22 +0000
commit9377887701ecd64970fb8c65929ab2e8516ca929 (patch)
treeb17162c36e4dd8be771edab74f13b6e1e37b9ed3 /libguile/unif.c
parentd7cf43257826796a0503e33b162cb7424a65bdc4 (diff)
downloadguile-9377887701ecd64970fb8c65929ab2e8516ca929.tar.gz
* Deprecated SCM_SETLENGTH.
Diffstat (limited to 'libguile/unif.c')
-rw-r--r--libguile/unif.c19
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;
}