]> git.eshelyaron.com Git - emacs.git/commitdiff
(Ffile_accessible_directory_p): Put back the gcpro.
authorKarl Heuer <kwzh@gnu.org>
Mon, 5 Sep 1994 01:12:25 +0000 (01:12 +0000)
committerKarl Heuer <kwzh@gnu.org>
Mon, 5 Sep 1994 01:12:25 +0000 (01:12 +0000)
src/fileio.c

index 4a1fe76bdd14560cd42a51acaaf4ff12a98d51e6..1654d350ca250e12303dd9ae539d2be00b9d6ffb 100644 (file)
@@ -2383,6 +2383,7 @@ searchable directory.")
 {
   Lisp_Object handler;
   int tem;
+  struct gcpro gcpro1;
 
   /* If the file name has special constructs in it,
      call the corresponding file handler.  */
@@ -2390,10 +2391,16 @@ searchable directory.")
   if (!NILP (handler))
     return call2 (handler, Qfile_accessible_directory_p, filename);
 
-  /* Need to gcpro in case the first function call has a handler that
-     causes filename to be relocated.  */
+  /* It's an unlikely combination, but yes we really do need to gcpro:
+     Suppose that file-accessible-directory-p has no handler, but
+     file-directory-p does have a handler; this handler causes a GC which
+     relocates the string in `filename'; and finally file-directory-p
+     returns non-nil.  Then we would end up passing a garbaged string
+     to file-executable-p.  */
+  GCPRO1 (filename);
   tem = (NILP (Ffile_directory_p (filename))
         || NILP (Ffile_executable_p (filename)));
+  UNGCPRO;
   return tem ? Qnil : Qt;
 }