]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix nul-terminated text/* strings from some programs
authorLars Ingebrigtsen <larsi@gnus.org>
Sat, 6 Nov 2021 21:43:22 +0000 (22:43 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Sat, 6 Nov 2021 21:43:22 +0000 (22:43 +0100)
* lisp/yank-media.el (yank-media--get-selection): Some programs
nul-terminate text/* strings.  Fix that.

lisp/yank-media.el

index 5cc5e366e9ceb466956798f56e17e26fd8f2e482..bc104a30c9fd2a68ef7e1d883d46742bbbe8583a 100644 (file)
@@ -76,9 +76,14 @@ the `register-yank-media-handler' mechanism."
 
 (defun yank-media--get-selection (type)
   (when-let ((data (gui-get-selection 'CLIPBOARD type)))
-    (if-let ((charset (get-text-property 0 'charset data)))
-        (encode-coding-string data charset)
-      data)))
+    (when-let ((charset (get-text-property 0 'charset data)))
+      (setq date (encode-coding-string data charset)))
+    ;; Some programs add a nul character at the end of text/*
+    ;; selections.  Remove that.
+    (when (and (string-match-p "\\`text/" (symbol-name type))
+               (zerop (elt data (1- (length data)))))
+      (setq data (substring data 0 (1- (length data)))))
+    data))
 
 ;;;###autoload
 (defun register-yank-media-handler (types handler)