summaryrefslogtreecommitdiff
path: root/libguile/srcprop.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/srcprop.c')
-rw-r--r--libguile/srcprop.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/libguile/srcprop.c b/libguile/srcprop.c
index 25f08f97c..94ff30674 100644
--- a/libguile/srcprop.c
+++ b/libguile/srcprop.c
@@ -122,9 +122,6 @@ prinsrcprops (obj, port, pstate)
return 1;
}
-static scm_smobfuns srcpropssmob =
-{marksrcprops, freesrcprops, prinsrcprops, 0};
-
SCM
scm_make_srcprops (line, col, filename, copy, plist)
@@ -134,7 +131,6 @@ scm_make_srcprops (line, col, filename, copy, plist)
SCM copy;
SCM plist;
{
- register SCM ans;
register scm_srcprops *ptr;
SCM_DEFER_INTS;
if ((ptr = srcprops_freelist) != NULL)
@@ -156,15 +152,11 @@ scm_make_srcprops (line, col, filename, copy, plist)
*(scm_srcprops **)&ptr[SRCPROPS_CHUNKSIZE - 1] = 0;
srcprops_freelist = (scm_srcprops *) &ptr[1];
}
- SCM_NEWCELL (ans);
- SCM_SETCAR (ans, scm_tc16_srcprops);
ptr->pos = SRCPROPMAKPOS (line, col);
ptr->fname = filename;
ptr->copy = copy;
ptr->plist = plist;
- SCM_SETCDR (ans, (SCM) ptr);
- SCM_ALLOW_INTS;
- return ans;
+ SCM_RETURN_NEWSMOB (scm_tc16_srcprops, ptr);
}
@@ -349,7 +341,8 @@ scm_set_source_property_x (obj, key, datum)
void
scm_init_srcprop ()
{
- scm_tc16_srcprops = scm_newsmob (&srcpropssmob);
+ scm_tc16_srcprops = scm_make_smob_type_mfpe ("srcprops", 0,
+ marksrcprops, freesrcprops, prinsrcprops, NULL);
scm_source_whash = scm_make_weak_key_hash_table (SCM_MAKINUM (2047));
scm_i_filename = SCM_CAR (scm_sysintern ("filename", SCM_UNDEFINED));