diff options
| -rw-r--r-- | src/callproc.c | 12 | ||||
| -rw-r--r-- | test/src/callproc-tests.el | 10 |
2 files changed, 21 insertions, 1 deletions
diff --git a/src/callproc.c b/src/callproc.c index 8883415f3f5..65c858393a9 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -1099,7 +1099,17 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r } if (nargs > 3 && !NILP (args[3])) - Fdelete_region (start, end); + { + if (NILP (start)) + { + /* No need to save restrictions since we delete everything + anyway. */ + Fwiden (); + del_range (BEG, Z); + } + else + Fdelete_region (start, end); + } if (nargs > 3) { diff --git a/test/src/callproc-tests.el b/test/src/callproc-tests.el index bf7d47b27f1..1617d5e33d3 100644 --- a/test/src/callproc-tests.el +++ b/test/src/callproc-tests.el @@ -66,4 +66,14 @@ (error :got-error)))) (should have-called-debugger))) +(ert-deftest call-process-region-entire-buffer-with-delete () + "Check that Bug#40576 is fixed." + (let ((emacs (expand-file-name invocation-name invocation-directory))) + (skip-unless (file-executable-p emacs)) + (with-temp-buffer + (insert "Buffer contents\n") + (should + (eq (call-process-region nil nil emacs :delete nil nil "--version") 0)) + (should (eq (buffer-size) 0))))) + ;;; callproc-tests.el ends here |
