Subject: bug#36598: 26.1; (error "‘/tmp/emacs1000’ is not a safe directory because it is a symlink")

From: Lars Ingebrigtsen <[email-masked]>
Date: Sun, 14 Jul 2019 13:44:05 +0200

[email-masked] writes:

> On 2019-07-13 15:45, Lars Ingebrigtsen wrote:
>> [email-masked] writes:
>>
>>> Launch emacs-27, start the server. Now launch emacs-26 and start the
>>> server with a different. The problem is that
>>> emacs-27 creates the file /tmp/emacs($PID) as a symlink, while
>>> emacs-26 doesn't like it.
>>>
>>> Probably created by
>>>
>>> b663c837249 (Stefan Monnier          2019-05-03  538)
>>
>> Could you post a backtrace for the "doesn't like it" case?
>
> Sure. It is Emacs-26 that errors.
>
> As far as I can see, this will only affect the edge case of someone
> running two versions of Emacs. I tend to do this (I run gnus in a
> standalone release emacs, and everything else in another emacs).

Commit b663c837249 (in May) which says "Cosmetic changes" is the one
that introduced this code?

    (let ((olddir (or (getenv "TMPDIR") "/tmp")))
      (when (and (equal dir (format "%s/emacs" (getenv "XDG_RUNTIME_DIR")))
                 (file-writable-p olddir))
        (let ((link (format "%s/emacs%d" olddir (user-uid))))
          (unless (file-directory-p link)
            ;; We're using the new location, so try and setup a symlink from
            ;; the old location, in case we want to use an old emacsclient.
            ;; FIXME: Check that it's safe to use!
            (make-symbolic-link dir link t)))))

And instead of making things work with an old emacsclient, it breaks the
Emacs 26 emacsclient?

I may be reading the region history wrong, though.

Stefan, was this checked in by mistake?

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