summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Vollmer <mvo@zagadka.de>2002-02-03 22:50:07 +0000
committerMarius Vollmer <mvo@zagadka.de>2002-02-03 22:50:07 +0000
commit9ff28a13e089fcd3706be7ba2edde98051e2df07 (patch)
tree5bbe17ed48e3a621ef0e2e87ad62fbbbe577960d
parentac48757b5ed4efeb2b7018c8e08ea26cab8a5418 (diff)
downloadguile-9ff28a13e089fcd3706be7ba2edde98051e2df07.tar.gz
(scm_iprin1): Print uninterned symbols unreadably.
-rw-r--r--libguile/print.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/libguile/print.c b/libguile/print.c
index e28284637..d972c3d4e 100644
--- a/libguile/print.c
+++ b/libguile/print.c
@@ -527,10 +527,23 @@ scm_iprin1 (SCM exp, SCM port, scm_print_state *pstate)
scm_lfwrite (SCM_STRING_CHARS (exp), SCM_STRING_LENGTH (exp), port);
break;
case scm_tc7_symbol:
- scm_print_symbol_name (SCM_SYMBOL_CHARS (exp),
- SCM_SYMBOL_LENGTH (exp),
- port);
- scm_remember_upto_here_1 (exp);
+ if (SCM_SYMBOL_INTERNED_P (exp))
+ {
+ scm_print_symbol_name (SCM_SYMBOL_CHARS (exp),
+ SCM_SYMBOL_LENGTH (exp),
+ port);
+ scm_remember_upto_here_1 (exp);
+ }
+ else
+ {
+ scm_puts ("#<uninterned-symbol ", port);
+ scm_print_symbol_name (SCM_SYMBOL_CHARS (exp),
+ SCM_SYMBOL_LENGTH (exp),
+ port);
+ scm_putc (' ', port);
+ scm_intprint ((long)exp, 16, port);
+ scm_putc ('>', port);
+ }
break;
case scm_tc7_variable:
scm_i_variable_print (exp, port, pstate);