summaryrefslogtreecommitdiff
path: root/nptl/sem_open.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2009-04-27 14:33:59 +0000
committerJakub Jelinek <jakub@redhat.com>2009-04-27 14:33:59 +0000
commit83489168c2447e3fe351dbb302b1026dc9fc512c (patch)
tree8c0029fbf2d97cd352310c6a793bb15745a24ec4 /nptl/sem_open.c
parent51211e710a024163f91ffd5ed29908faa3cd41e7 (diff)
Updated to fedora-glibc-20090427T1419cvs/fedora-glibc-2_9_90-22
Diffstat (limited to 'nptl/sem_open.c')
-rw-r--r--nptl/sem_open.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/nptl/sem_open.c b/nptl/sem_open.c
index e58dde9472..4e603491c0 100644
--- a/nptl/sem_open.c
+++ b/nptl/sem_open.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -302,15 +302,18 @@ sem_open (const char *name, int oflag, ...)
}
/* Create the initial file content. */
- sem_t initsem;
+ union
+ {
+ sem_t initsem;
+ struct new_sem newsem;
+ } sem;
- struct new_sem *iinitsem = (struct new_sem *) &initsem;
- iinitsem->value = value;
- iinitsem->private = 0;
- iinitsem->nwaiters = 0;
+ sem.newsem.value = value;
+ sem.newsem.private = 0;
+ sem.newsem.nwaiters = 0;
/* Initialize the remaining bytes as well. */
- memset ((char *) &initsem + sizeof (struct new_sem), '\0',
+ memset ((char *) &sem.initsem + sizeof (struct new_sem), '\0',
sizeof (sem_t) - sizeof (struct new_sem));
tmpfname = (char *) alloca (mountpoint.dirlen + 6 + 1);
@@ -349,7 +352,7 @@ sem_open (const char *name, int oflag, ...)
break;
}
- if (TEMP_FAILURE_RETRY (__libc_write (fd, &initsem, sizeof (sem_t)))
+ if (TEMP_FAILURE_RETRY (__libc_write (fd, &sem.initsem, sizeof (sem_t)))
== sizeof (sem_t)
/* Map the sem_t structure from the file. */
&& (result = (sem_t *) mmap (NULL, sizeof (sem_t),