]> git.eshelyaron.com Git - emacs.git/commitdiff
* alloc.c (valid_pointer_p): Use pipe, not open.
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 18 Jul 2011 20:24:40 +0000 (13:24 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 18 Jul 2011 20:24:40 +0000 (13:24 -0700)
This fixes some permissions issues when debugging.

src/ChangeLog
src/alloc.c

index 5de5fefd6aaa1f2ae9137ea0702a34cd89533e54..ca42b696f9cce75b9148858d307ee8197a60f7c1 100644 (file)
@@ -1,5 +1,8 @@
 2011-07-18  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * alloc.c (valid_pointer_p): Use pipe, not open.
+       This fixes some permissions issues when debugging.
+
        * fileio.c (Fcopy_file): Adjust mode if fchown fails.  (Bug#9002)
        If fchown fails to set both uid and gid, try to set just gid,
        as that is sometimes allowed.  Adjust the file's mode to eliminate
index 44f935c243d0e9b450dcbe71a5541d7b5d657524..d48d1f34dbd44cf9a3a568e514cf0e1d89937ca9 100644 (file)
@@ -4415,18 +4415,18 @@ valid_pointer_p (void *p)
 #ifdef WINDOWSNT
   return w32_valid_pointer_p (p, 16);
 #else
-  int fd;
+  int fd[2];
 
   /* Obviously, we cannot just access it (we would SEGV trying), so we
      trick the o/s to tell us whether p is a valid pointer.
      Unfortunately, we cannot use NULL_DEVICE here, as emacs_write may
      not validate p in that case.  */
 
-  if ((fd = emacs_open ("__Valid__Lisp__Object__", O_CREAT | O_WRONLY | O_TRUNC, 0666)) >= 0)
+  if (pipe (fd) == 0)
     {
-      int valid = (emacs_write (fd, (char *)p, 16) == 16);
-      emacs_close (fd);
-      unlink ("__Valid__Lisp__Object__");
+      int valid = (emacs_write (fd[1], (char *) p, 16) == 16);
+      emacs_close (fd[1]);
+      emacs_close (fd[0]);
       return valid;
     }