Subject: 24.3.50; `dired-uncache' when tried `dired-do-chmod': (wrong-type-argument stringp nil)

From: Drew Adams <[email-masked]>
Date: Mon, 23 Dec 2013 20:43:35 -0800 (PST)

This was from my setup, not emacs -Q.

I used `M' in Dired, and entered "a-w" as the argument, then OK'd
modifying the marked files.  I got this backtrace:

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  find-file-name-handler(nil dired-uncache)
  dired-uncache(nil)
  dired-do-redisplay(nil)
  dired-do-chmod(nil)
  call-interactively(dired-do-chmod nil nil)
  command-execute(dired-do-chmod)

None of the functions listed in the backtrace are from my code; all are
the vanilla versions.

However, this happened only once.  I could not reproduce it thereafter,
in either my setup or emacs -Q.  If it helps somehow, fine.  If not,
feel free to close it.

Looking at the code for `dired-do-redisplay', it seems that when I
invoked `dired-do-chmod' (in Dired, of course) the value of
`dired-directory' was nil.

The doc string for `dired-directory' does not describe any situation in
which it can be or should be nil.  It says only that the value is a
string or a non-empty list.

Is the doc string incomplete?  Is it a bug that somehow it had the value
nil (in Dired)?  Nil is the default value.  And thatit seems to be the
value of the variable in any non-Dired buffer.

I would think that, at the very least:

1. The doc string should mention what a nil value means.
2. The code should check that the variable is non-nil, and provide a
   better error message for the nil case than just wrong-type-argument.

`dired-directory' is not mentioned in the Elisp manual.

In GNU Emacs 24.3.50.1 (i686-pc-mingw32)
 of 2013-12-22 on ODIEONE
Bzr revision: 115700 [email-masked]
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --prefix=/c/Devel/emacs/binary --enable-checking=yes,glyphs
 'CFLAGS=-O0 -g3' CPPFLAGS=-Ic:/Devel/emacs/include
 LDFLAGS=-Lc:/Devel/emacs/lib'