This issue is 100% reproducible. In a file, put some form like:
(loop for k from 1 to 10 do (print i))
Make sure the file ends at the closing paren; no newline or anything. Put the cursor after the closing paren, and press C-c C-m to have slime macroexpand it. This causes xemacs to crash (due to a bug in xemacs). But the issue is this in slime-sexp-at-point-for-macroexpansion:
(let ((string (slime-sexp-at-point-or-error)) (bounds (bounds-of-thing-at-point 'sexp)) (char-at-point (substring-no-properties (thing-at-point 'char))))
In xemacs, (thing-at-point 'char) returns nil. Then (substring-no-properties nil) crashes xemacs. But if the obvious fix is applied to xemacs, slime would just signal an error about nil not being a string.
My workaround for this is
(char-at-point (substring-no-properties (or (thing-at-point 'char) "\n")))
Not great, but solves the problem. I'm not sure what the right solution would be.
Ray