* lisp/net/tramp-sh.el (tramp-sh-handle-write-region): Copy to temp file
only if FILENAME exists. (Bug#40156)
* test/lisp/net/tramp-tests.el (tramp-test10-write-region): Extend test.
;; If `append' is non-nil, we copy the file locally, and let
;; the native `write-region' implementation do the job.
- (when append (copy-file filename tmpfile 'ok))
+ (when (and append (file-exists-p filename))
+ (copy-file filename tmpfile 'ok))
;; We say `no-message' here because we don't want the
;; visited file modtime data to be clobbered from the temp
(write-region nil nil tmp-name 3))
(with-temp-buffer
(insert-file-contents tmp-name)
- (should (string-equal (buffer-string) "foobaz"))))
+ (should (string-equal (buffer-string) "foobaz")))
+ (delete-file tmp-name)
+ (with-temp-buffer
+ (insert "foo")
+ (write-region nil nil tmp-name 'append))
+ (with-temp-buffer
+ (insert-file-contents tmp-name)
+ (should (string-equal (buffer-string) "foo"))))
;; Write string.
(write-region "foo" nil tmp-name)