diff options
author | Andy Wingo <wingo@pobox.com> | 2014-04-28 18:51:21 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2014-04-28 18:51:21 +0200 |
commit | d7a67c3e918acd8ca46dc7792a8ca98b33cb94e8 (patch) | |
tree | 7ccf125978778d1ac6bb656245305c76db8e02d0 /libguile/goops.c | |
parent | 475772ea57c97d0fa0f9ed9303db137d9798ddd3 (diff) | |
parent | 4338f2f91e1dd63a40384077d091295d90047926 (diff) | |
download | guile-d7a67c3e918acd8ca46dc7792a8ca98b33cb94e8.tar.gz |
Merge remote-tracking branch 'origin/stable-2.0'
Conflicts:
.gitignore
doc/example-smob/Makefile
doc/ref/api-smobs.texi
doc/ref/libguile-concepts.texi
doc/ref/libguile-smobs.texi
libguile.h
libguile/finalizers.c
libguile/finalizers.h
libguile/goops.c
module/language/tree-il/compile-glil.scm
module/oop/goops.scm
Diffstat (limited to 'libguile/goops.c')
-rw-r--r-- | libguile/goops.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/libguile/goops.c b/libguile/goops.c index 2cf343f79..450ae0d55 100644 --- a/libguile/goops.c +++ b/libguile/goops.c @@ -640,7 +640,7 @@ SCM_DEFINE (scm_sys_initialize_object, "%initialize-object", 2, 0, 0, get_n_set = SCM_CDR (get_n_set), slots = SCM_CDR (slots)) { SCM slot_name = SCM_CAR (slots); - SCM slot_value = SCM_PACK (0); + SCM slot_value = SCM_GOOPS_UNBOUND; if (!scm_is_null (SCM_CDR (slot_name))) { @@ -664,12 +664,12 @@ SCM_DEFINE (scm_sys_initialize_object, "%initialize-object", 2, 0, 0, slot_value = scm_i_get_keyword (tmp, initargs, n_initargs, - SCM_PACK (0), + SCM_GOOPS_UNBOUND, FUNC_NAME); } } - if (SCM_UNPACK (slot_value)) + if (!SCM_GOOPS_UNBOUNDP (slot_value)) /* set slot to provided value */ set_slot_value (class, obj, SCM_CAR (get_n_set), slot_value); else @@ -677,14 +677,10 @@ SCM_DEFINE (scm_sys_initialize_object, "%initialize-object", 2, 0, 0, /* set slot to its :init-form if it exists */ tmp = SCM_CADAR (get_n_set); if (scm_is_true (tmp)) - { - slot_value = get_slot_value (class, obj, SCM_CAR (get_n_set)); - if (SCM_GOOPS_UNBOUNDP (slot_value)) - set_slot_value (class, - obj, - SCM_CAR (get_n_set), - scm_call_0 (tmp)); - } + set_slot_value (class, + obj, + SCM_CAR (get_n_set), + scm_call_0 (tmp)); } } |