Subject: bug#7027: 24.0.50; Dired error (wrong-type-arg stringp nil) with cons arg with wildcard in name

From: Lars Ingebrigtsen <[email-masked]>
Date: Tue, 01 Oct 2019 21:59:37 +0200

"Drew Adams" <[email-masked]> writes:

> Eval this: (dired '("TTTT" "111.el" "b*.el")), assuming there is a file
> 111.el and some file matching b*.el (but no file with name "b*.el",
> i.e. with a literal `*' in the name).
>
> You get this error: (wrong-type-argument stringp nil)

Can you post the backtrace?

[...]

> This gets eval'd (where the ^@ is really a control char):
>
> (ls-lisp-insert-directory nil (97 108) nil "\\`b[^^@]*\\.el\\'" nil)
>
> That happens because of this call:
>
> (insert-directory "b*.el" "-al" nil nil)
>
> which calls (string-match "[[?*]" "b*.el") returning 1 (non-nil).
>
> (file-exists-p "b*.el") then returns nil,
> and (wildcard-to-regexp "b*.el") returns the regexp shown above.

I tried reproducing with

(ls-lisp-insert-directory nil '(97 108) nil (wildcard-to-regexp "b*.el") nil)

but that fails with a different error since FILE can't be nil.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no