diff options
| author | Noam Postavsky | 2017-02-11 19:47:55 -0500 |
|---|---|---|
| committer | Noam Postavsky | 2017-06-29 19:40:23 -0400 |
| commit | c87c87fcc361494815bbd1d92f450b0b80a3ecbb (patch) | |
| tree | 60d7ae515b92944d1e90772df3ae5dac05b5c715 /lisp | |
| parent | 0ae28c71c739dfecbe94a5ff6786e81021d2d1cf (diff) | |
| download | emacs-c87c87fcc361494815bbd1d92f450b0b80a3ecbb.tar.gz emacs-c87c87fcc361494815bbd1d92f450b0b80a3ecbb.zip | |
Escape NUL bytes in X selections (Bug#6991)
* lisp/term/w32-win.el (w32--set-selection):
* lisp/select.el (xselect--encode-string): Replace NUL bytes with
"\0".
* doc/emacs/killing.texi: Document new behavior.
* etc/NEWS (times): Announce it.
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/select.el | 3 | ||||
| -rw-r--r-- | lisp/term/w32-win.el | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/lisp/select.el b/lisp/select.el index 4849d7d515e..579c5c7e2ee 100644 --- a/lisp/select.el +++ b/lisp/select.el | |||
| @@ -475,6 +475,9 @@ two markers or an overlay. Otherwise, it is nil." | |||
| 475 | (t | 475 | (t |
| 476 | (error "Unknown selection type: %S" type))))) | 476 | (error "Unknown selection type: %S" type))))) |
| 477 | 477 | ||
| 478 | ;; Most programs are unable to handle NUL bytes in strings. | ||
| 479 | (setq str (replace-regexp-in-string "\0" "\\0" str t t)) | ||
| 480 | |||
| 478 | (setq next-selection-coding-system nil) | 481 | (setq next-selection-coding-system nil) |
| 479 | (cons type str)))) | 482 | (cons type str)))) |
| 480 | 483 | ||
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el index fda93884c40..be895a040da 100644 --- a/lisp/term/w32-win.el +++ b/lisp/term/w32-win.el | |||
| @@ -396,7 +396,7 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.") | |||
| 396 | ;;; Fix interface to (X-specific) mouse.el | 396 | ;;; Fix interface to (X-specific) mouse.el |
| 397 | (defun w32--set-selection (type value) | 397 | (defun w32--set-selection (type value) |
| 398 | (if (eq type 'CLIPBOARD) | 398 | (if (eq type 'CLIPBOARD) |
| 399 | (w32-set-clipboard-data value) | 399 | (w32-set-clipboard-data (replace-regexp-in-string "\0" "\\0" value t t)) |
| 400 | (put 'x-selections (or type 'PRIMARY) value))) | 400 | (put 'x-selections (or type 'PRIMARY) value))) |
| 401 | 401 | ||
| 402 | (defun w32--get-selection (&optional type data-type) | 402 | (defun w32--get-selection (&optional type data-type) |