Subject: bug#12677: 24.2.50; `nreverse' complains that ("foo") is not `listp'

From: "Drew Adams" <[email-masked]>
Date: Thu, 18 Oct 2012 18:47:23 -0700

> My guess is that the code ended up doing something morally equivalent
> to (nreverse '(1 2 . 3)).  Try it and you'll see a similarly confusing
> error message.

I understand your guess, but I think that might not be what was happening.  In
the debugger I evaluated the variable and saw that its full value was just that
singleton list.

But I'm OK with your closing this, as I cannot repro it from emacs -Q and it
does not interfere with my code.

> The reason is that by the time you get to the error, the list has
> already been "nreversed" by side-effect, so the arg (which 
> still points to the cons cell which used to be the first element
> of the line) now still points to the same cons-cell, but that
> cons-cell's cdr has been set to nil because it was to become the
> last element of the returned list.

Do I understand correctly that a true list with a single element should not
present such a problem?

> I've installed a change in trunk which makes the above error 
> include the problematic non-nil tail, rather than the first
> element who looks confusingly normal.

Sounds good.