Subject: 27.0.50; Interprogram paste is destructively modified

From: "Basil L. Contovounesios" <[email-masked]>
Date: Sun, 08 Apr 2018 16:09:51 +0100

Consider the following case:

(defvar my-paste '("foo" "bar"))
(defun my-paste () my-paste)
(setq interprogram-paste-function #'my-paste)

my-paste           ; => ("foo" "bar")
(current-kill 0 t) ; => "foo"
my-paste           ; => ("foo")

This is clearly a contrived use of interprogram-paste-function, but IMO
functions ought not needlessly make destructive changes to non-internal
values not known to be newly created.

Patch to follow in case others share my opinion.

Thanks,

-- 
Basil

In GNU Emacs 27.0.50 (build 2, x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2018-04-08 built on thunk
Repository revision: 8df23a82042fa7dbaaa4377bc376d705595b073f
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description: Debian GNU/Linux buster/sid

Configured features:
XAW3D XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS
NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS LUCID X11 MODULES THREADS LIBSYSTEMD JSON LCMS2