Fix xshmfence_alloc_shm() on 8.3 and 9.x. O_CLOEXEC is available on all

supported versions but mkostemp(3) is only available from 10.0.  Therfore,
the fd was not properly initialized on them.
This commit is contained in:
Jung-uk Kim 2014-07-08 21:06:40 +00:00
parent 6b720730d9
commit d3839cf9e1
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=361292
2 changed files with 11 additions and 12 deletions

View File

@ -2,7 +2,7 @@
PORTNAME= libxshmfence
PORTVERSION= 1.1
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= x11
MAINTAINER= x11@FreeBSD.org

View File

@ -1,8 +1,11 @@
--- src/xshmfence_alloc.c 2013-11-20 17:13:08.000000000 -0500
+++ src/xshmfence_alloc.c 2013-12-09 16:06:17.000000000 -0500
@@ -41,11 +41,15 @@
--- src/xshmfence_alloc.c.orig 2013-11-20 17:13:08.000000000 -0500
+++ src/xshmfence_alloc.c 2014-07-08 16:39:18.000000000 -0400
@@ -39,10 +39,14 @@
xshmfence_alloc_shm(void)
{
char template[] = SHMDIR "/shmfd-XXXXXX";
int fd;
- int fd;
+ int fd = -1;
-#ifdef O_TMPFILE
+#if defined(O_CLOEXEC)
@ -10,11 +13,7 @@
+ fd = mkostemp(template, O_CLOEXEC);
+#elif defined(O_TMPFILE)
fd = open(SHMDIR, O_TMPFILE|O_RDWR|O_CLOEXEC|O_EXCL, 0666);
- if (fd < 0)
#endif
+ if (fd < 0)
{
+#endif
fd = mkstemp(template);
if (fd < 0)
return fd;
if (fd < 0)
#endif
{