summaryrefslogtreecommitdiff
path: root/libguile/dynwind.c
diff options
context:
space:
mode:
authorMikael Djurfeldt <djurfeldt@nada.kth.se>1999-07-07 09:44:01 +0000
committerMikael Djurfeldt <djurfeldt@nada.kth.se>1999-07-07 09:44:01 +0000
commit23a621512f6a034a8624f589a3862dbddcec6b9d (patch)
treeefb8b5a0f046402b74a5851fa1a902c40bc91561 /libguile/dynwind.c
parent8ac40ce8871ccfa5e8c0a4fe3a1d55dfb69f839c (diff)
downloadguile-23a621512f6a034a8624f589a3862dbddcec6b9d.tar.gz
Greg's smob patch
Diffstat (limited to 'libguile/dynwind.c')
-rw-r--r--libguile/dynwind.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/libguile/dynwind.c b/libguile/dynwind.c
index 8ae6fd0a1..2cc4f1041 100644
--- a/libguile/dynwind.c
+++ b/libguile/dynwind.c
@@ -118,13 +118,6 @@ printguards (SCM exp, SCM port, scm_print_state *pstate)
return 1;
}
-static scm_smobfuns guardsmob = {
- 0,
- freeguards,
- printguards,
- 0
-};
-
SCM
scm_internal_dynamic_wind (scm_guard_t before,
scm_inner_t inner,
@@ -135,15 +128,11 @@ scm_internal_dynamic_wind (scm_guard_t before,
SCM guards, ans;
guardsmem *g;
before (guard_data);
- SCM_NEWCELL (guards);
- SCM_DEFER_INTS;
g = (guardsmem *) scm_must_malloc (sizeof (*g), "guards");
g->before = before;
g->after = after;
g->data = guard_data;
- SCM_SETCDR (guards, g);
- SCM_SETCAR (guards, tc16_guards);
- SCM_ALLOW_INTS;
+ SCM_NEWSMOB (guards, tc16_guards, g);
scm_dynwinds = scm_acons (guards, SCM_BOOL_F, scm_dynwinds);
ans = inner (inner_data);
scm_dynwinds = SCM_CDR (scm_dynwinds);
@@ -239,6 +228,7 @@ scm_dowinds (to, delta)
void
scm_init_dynwind ()
{
- tc16_guards = scm_newsmob (&guardsmob);
+ tc16_guards = scm_make_smob_type_mfpe ("guards", sizeof (struct guardsmem),
+ NULL, freeguards, printguards, NULL);
#include "dynwind.x"
}