summaryrefslogtreecommitdiff
path: root/lisp/yank-media.el
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2021-11-06 22:43:22 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2021-11-06 22:43:22 +0100
commit973f0aa5595de878f5c01b0b9365dfb57e54f7f4 (patch)
tree4dceafdf5eb35088b3e39811266b60b23220502b /lisp/yank-media.el
parentde06e0539537a99e147cbb96ee9fceaecafc9190 (diff)
downloademacs-973f0aa5595de878f5c01b0b9365dfb57e54f7f4.tar.gz
emacs-973f0aa5595de878f5c01b0b9365dfb57e54f7f4.tar.bz2
emacs-973f0aa5595de878f5c01b0b9365dfb57e54f7f4.zip
Fix nul-terminated text/* strings from some programs
* lisp/yank-media.el (yank-media--get-selection): Some programs nul-terminate text/* strings. Fix that.
Diffstat (limited to 'lisp/yank-media.el')
-rw-r--r--lisp/yank-media.el11
1 files changed, 8 insertions, 3 deletions
diff --git a/lisp/yank-media.el b/lisp/yank-media.el
index 5cc5e366e9c..bc104a30c9f 100644
--- a/lisp/yank-media.el
+++ b/lisp/yank-media.el
@@ -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)