summaryrefslogtreecommitdiff
path: root/libguile/keywords.c
diff options
context:
space:
mode:
authorMarius Vollmer <mvo@zagadka.de>2001-05-15 14:57:22 +0000
committerMarius Vollmer <mvo@zagadka.de>2001-05-15 14:57:22 +0000
commit86d31dfe7d0754b863863f6544c75097ef68fe8c (patch)
tree0f78f9d3ace802b80422dcedea25098cf901d05a /libguile/keywords.c
parent7c33806ae676601f902dbdc0f39c1f0828d68951 (diff)
downloadguile-86d31dfe7d0754b863863f6544c75097ef68fe8c.tar.gz
Merge from mvo-vcell-cleanup-1-branch.
Diffstat (limited to 'libguile/keywords.c')
-rw-r--r--libguile/keywords.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/libguile/keywords.c b/libguile/keywords.c
index ff86b582f..f17eedacc 100644
--- a/libguile/keywords.c
+++ b/libguile/keywords.c
@@ -71,24 +71,21 @@ SCM_DEFINE (scm_make_keyword_from_dash_symbol, "make-keyword-from-dash-symbol",
"Make a keyword object from a @var{symbol} that starts with a dash.")
#define FUNC_NAME s_scm_make_keyword_from_dash_symbol
{
- SCM vcell;
+ SCM keyword;
SCM_ASSERT (SCM_SYMBOLP (symbol)
&& ('-' == SCM_SYMBOL_CHARS(symbol)[0]),
symbol, SCM_ARG1, FUNC_NAME);
SCM_DEFER_INTS;
- vcell = scm_sym2ovcell_soft (symbol, scm_keyword_obarray);
- if (SCM_FALSEP (vcell))
+ keyword = scm_hashq_ref (scm_keyword_obarray, symbol, SCM_BOOL_F);
+ if (SCM_FALSEP (keyword))
{
- SCM keyword;
SCM_NEWSMOB (keyword, scm_tc16_keyword, SCM_UNPACK (symbol));
- scm_intern_symbol (scm_keyword_obarray, symbol);
- vcell = scm_sym2ovcell_soft (symbol, scm_keyword_obarray);
- SCM_SETCDR (vcell, keyword);
+ scm_hashq_set_x (scm_keyword_obarray, symbol, keyword);
}
SCM_ALLOW_INTS;
- return SCM_CDR (vcell);
+ return keyword;
}
#undef FUNC_NAME