Fix bug where insert-file-contents closes a file twice.
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 16 Jul 2013 21:49:32 +0000 (14:49 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 16 Jul 2013 21:49:32 +0000 (14:49 -0700)
commit41d48a42df6ce4e5af9543f97313e256f16aa900
tree2c23587c2691d181eb1561ee7347924887f73e53
parent27e498e6e5fea8ac64c90ac13678b537b7b12302
Fix bug where insert-file-contents closes a file twice.

* fileio.c (close_file_unwind): Don't close if FD is negative;
this can happen when unwinding a zapped file descriptor.
(Finsert_file_contents): Unwind-protect the fd before the point marker,
in case Emacs runs out of memory between the two unwind-protects.
Don't trash errno when closing FD.
Zap the FD in the specpdl when closing it, instead of deferring
the removal of the unwind-protect; this fixes a bug where a child
function unwinds the stack past us.

Fixes: debbugs:14839
src/ChangeLog
src/fileio.c
src/lisp.h