summaryrefslogtreecommitdiff
path: root/libguile/goops.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/goops.c')
-rw-r--r--libguile/goops.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/libguile/goops.c b/libguile/goops.c
index e8ae001ed..40a93b1a4 100644
--- a/libguile/goops.c
+++ b/libguile/goops.c
@@ -475,17 +475,13 @@ SCM_DEFINE (scm_sys_clear_fields_x, "%clear-fields!", 2, 0, 0,
#define FUNC_NAME s_scm_sys_clear_fields_x
{
scm_t_signed_bits n, i;
- SCM vtable, layout;
SCM_VALIDATE_STRUCT (1, obj);
- vtable = SCM_STRUCT_VTABLE (obj);
-
- n = SCM_STRUCT_DATA_REF (vtable, scm_vtable_index_size);
- layout = SCM_VTABLE_LAYOUT (vtable);
+ n = SCM_STRUCT_SIZE (obj);
/* Set all SCM-holding slots to the GOOPS unbound value. */
for (i = 0; i < n; i++)
- if (scm_i_symbol_ref (layout, i*2) == 'p')
+ if (!SCM_STRUCT_FIELD_IS_UNBOXED (obj, i))
SCM_STRUCT_SLOT_SET (obj, i, unbound);
return SCM_UNSPECIFIED;