summaryrefslogtreecommitdiff
path: root/libguile/smob.c
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2009-01-18 16:53:01 +0100
committerLudovic Courtès <ludo@gnu.org>2009-02-03 00:02:50 +0100
commit04795a1cb259c20896fb2edb50c58086027281b0 (patch)
tree21d4d40a7a4148e1e2a8592f6cf5029b23fb4da5 /libguile/smob.c
parent202271f291971cf14175f5a1a193955f72d43d79 (diff)
downloadguile-04795a1cb259c20896fb2edb50c58086027281b0.tar.gz
GOOPS: Statically allocate the SMOB class array.
* libguile/goops.c (scm_smob_class): Statically allocate it. (create_smob_classes): Don't malloc(3) `scm_smob_class'. * libguile/goops.h (scm_smob_class): Update declaration. * libguile/smob.c (scm_make_smob_type, scm_set_smob_apply): When checking whether GOOPS is initialized, check whether the first element of SCM_SMOB_CLASS is non-zero.
Diffstat (limited to 'libguile/smob.c')
-rw-r--r--libguile/smob.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libguile/smob.c b/libguile/smob.c
index 2e781ed1e..899197901 100644
--- a/libguile/smob.c
+++ b/libguile/smob.c
@@ -309,7 +309,7 @@ scm_make_smob_type (char const *name, size_t size)
}
/* Make a class object if Goops is present. */
- if (scm_smob_class)
+ if (SCM_UNPACK (scm_smob_class[0]) != 0)
scm_smob_class[new_smob] = scm_make_extended_class (name, 0);
return scm_tc7_smob + new_smob * 256;
@@ -449,8 +449,8 @@ scm_set_smob_apply (scm_t_bits tc, SCM (*apply) (),
scm_smobs[SCM_TC2SMOBNUM (tc)].apply_2 = apply_2;
scm_smobs[SCM_TC2SMOBNUM (tc)].apply_3 = apply_3;
scm_smobs[SCM_TC2SMOBNUM (tc)].gsubr_type = type;
-
- if (scm_smob_class)
+
+ if (SCM_UNPACK (scm_smob_class[0]) != 0)
scm_i_inherit_applicable (scm_smob_class[SCM_TC2SMOBNUM (tc)]);
}