Subject: bug#2629: 23.0.91; emacs-snapshot20090308: epa can not save .gpg buffer

From: Memnon Anon <[email-masked]>
Date: Thu, 12 Mar 2009 08:41:33 +0100

Chong Yidong <[email-masked]> writes:
[...]
>
> I can't reproduce this bug.
>
> Could you please go to epa-file.el, and do M-x eval buffer RET, then
> trigger the bug again?  That might provide a more informative Lisp
> backtrace.  Thanks.

Did so. This is from my running emacs, but I verified the problem is
also when emacs-snapshot is started -Q.
I would love to do more, but I can't. :(

Output of toggle-debug-on-error:

Debugger entered--Lisp error: (file-error "Opening output file" integer-or-marker-p nil)
  signal(file-error ("Opening output file" integer-or-marker-p nil))
  (condition-case error (setq string (epg-encrypt-string context ... ...)) (error (if ... ...) (signal ... ...)))
  (let* ((coding-system ...) (context ...) (coding-system-for-write ...) string entry (recipients ...)) (epg-context-set-passphrase-callback context (cons ... file)) (epg-context-set-progress-callback context (function epa-progress-callback-function)) (epg-context-set-armor context epa-armor) (condition-case error (setq string ...) (error ... ...)) (epa-file-run-real-handler (function write-region) (list string nil file append visit lockname mustbenew)) (if (boundp ...) (setq last-coding-system-used coding-system)) (if (eq visit t) (progn ... ...) (if ... ...)) (if (or ... ... ...) (message "Wrote %s" buffer-file-name)))
  epa-file-write-region(nil nil "/home/username/testing.gpg" nil t)
  apply(epa-file-write-region (nil nil "/home/username/testing.gpg" nil t))
  (if op (apply op args) (epa-file-run-real-handler operation args))
  (let ((op ...)) (if op (apply op args) (epa-file-run-real-handler operation args)))
  (progn (let (...) (if op ... ...)))
  (unwind-protect (progn (let ... ...)) (set-match-data save-match-data-internal (quote evaporate)))
  (let ((save-match-data-internal ...)) (unwind-protect (progn ...) (set-match-data save-match-data-internal ...)))
  (save-match-data (let (...) (if op ... ...)))
  epa-file-handler(write-region nil nil "/home/username/testing.gpg" nil t)
  write-region(nil nil "/home/username/testing.gpg" nil t "~/testing.gpg")
  basic-save-buffer-2()
  basic-save-buffer-1()
  basic-save-buffer()
  save-buffer(1)
  call-interactively(save-buffer nil nil)