unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#30564: call-process always fails for empty exec-path
@ 2018-02-21  2:07 Christopher Wellons
  2018-04-14 19:56 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 2+ messages in thread
From: Christopher Wellons @ 2018-02-21  2:07 UTC (permalink / raw)
  To: 30564

The call-process function incorrectly fails for valid absolute paths 
when exec-path is nil:

    (let ((exec-path ()))
      (call-process "/bin/ls"))
    ;; error: (file-error "Searching for program"
    ;;                    "No such file or directory" "/bin/ls")

Adding a single element to exec-path fixes the problem, even if that 
element is nonsense:

    (let ((exec-path '(t)))
      (call-process "/bin/ls"))
    ;; => 0

The bug is in the for loop in openp() (lread.c). The only successful 
returns are found inside the loop. An empty list results in no loop 
iterations, which means an absolute path has no chance to return 
successfully.

This bug dates back at least as far as Emacs 24.3.





^ permalink raw reply	[flat|nested] 2+ messages in thread

* bug#30564: call-process always fails for empty exec-path
  2018-02-21  2:07 bug#30564: call-process always fails for empty exec-path Christopher Wellons
@ 2018-04-14 19:56 ` Lars Ingebrigtsen
  0 siblings, 0 replies; 2+ messages in thread
From: Lars Ingebrigtsen @ 2018-04-14 19:56 UTC (permalink / raw)
  To: Christopher Wellons; +Cc: 30564

Christopher Wellons <wellons@nullprogram.com> writes:

> The call-process function incorrectly fails for valid absolute paths
> when exec-path is nil:
>
>    (let ((exec-path ()))
>      (call-process "/bin/ls"))
>    ;; error: (file-error "Searching for program"
>    ;;                    "No such file or directory" "/bin/ls")
>
> Adding a single element to exec-path fixes the problem, even if that
> element is nonsense:
>
>    (let ((exec-path '(t)))
>      (call-process "/bin/ls"))
>    ;; => 0
>
> The bug is in the for loop in openp() (lread.c). The only successful
> returns are found inside the loop. An empty list results in no loop
> iterations, which means an absolute path has no chance to return
> successfully.

I've now fixed this by transforming the for loop into a do/while loop.

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





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-04-14 19:56 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-21  2:07 bug#30564: call-process always fails for empty exec-path Christopher Wellons
2018-04-14 19:56 ` Lars Ingebrigtsen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).