diff options
author | Richard M. Stallman <rms@gnu.org> | 2002-12-21 17:46:38 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 2002-12-21 17:46:38 +0000 |
commit | 62e3881f1ff906ed91def2f376128e097914562b (patch) | |
tree | 96e712a5416fcb144b8369fad7a52f7ea0f32a41 /src/dired.c | |
parent | 2bb27597b3c800f8d9771029c696cb2bcd7a6731 (diff) | |
download | emacs-62e3881f1ff906ed91def2f376128e097914562b.tar.gz |
(file_name_completion): Close directory on error
Diffstat (limited to 'src/dired.c')
-rw-r--r-- | src/dired.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/dired.c b/src/dired.c index 7b8a3dca552..4cb8af883b5 100644 --- a/src/dired.c +++ b/src/dired.c @@ -523,6 +523,10 @@ file_name_completion (file, dirname, all_flag, ver_flag) if (!d) report_file_error ("Opening directory", Fcons (dirname, Qnil)); + record_unwind_protect (directory_files_internal_unwind, + Fcons (make_number (((unsigned long) d) >> 16), + make_number (((unsigned long) d) & 0xffff))); + /* Loop reading blocks */ /* (att3b compiler bug requires do a null comparison this way) */ while (1) @@ -716,10 +720,11 @@ file_name_completion (file, dirname, all_flag, ver_flag) } } closedir (d); + /* Discard the unwind protect. */ + specpdl_ptr = specpdl + count; } UNGCPRO; - bestmatch = unbind_to (count, bestmatch); if (all_flag || NILP (bestmatch)) { @@ -738,6 +743,8 @@ file_name_completion (file, dirname, all_flag, ver_flag) quit: if (d) closedir (d); + /* Discard the unwind protect. */ + specpdl_ptr = specpdl + count; Vquit_flag = Qnil; return Fsignal (Qquit, Qnil); } |