Hashes in symbol names need to be escaped with |...|.

Fixes issue #348.
This commit is contained in:
Alex Shinn 2016-06-05 22:34:39 +09:00
parent fdab1188c1
commit d975aac7ed

4
sexp.c
View file

@ -1208,7 +1208,7 @@ sexp sexp_intern(sexp ctx, const char *str, sexp_sint_t len) {
goto normal_intern;
for ( ; i<len; i++, p++) {
c = *p;
if ((unsigned char)c <= 32 || (unsigned char)c > 127 || c == '\\' || c == '.' || sexp_is_separator(c))
if ((unsigned char)c <= 32 || (unsigned char)c > 127 || c == '\\' || c == '.' || c =='#' || sexp_is_separator(c))
goto normal_intern;
he = huff_table[(unsigned char)c];
newbits = he.len;
@ -1940,7 +1940,7 @@ sexp sexp_write_one (sexp ctx, sexp obj, sexp out) {
sexp_tolower(str[3]) == 'n')))))
? '|' : EOF;
for (i=sexp_lsymbol_length(obj)-1; i>=0; i--)
if (str[i] <= ' ' || str[i] == '\\' || sexp_is_separator(str[i]))
if (str[i] <= ' ' || str[i] == '\\' || str[i] == '#' || sexp_is_separator(str[i]))
c = '|';
if (c!=EOF) sexp_write_char(ctx, c, out);
for (i=sexp_lsymbol_length(obj); i>0; str++, i--) {