aboutsummaryrefslogtreecommitdiff
path: root/pthreads/sem_getvalue.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-02-13 11:03:57 +0100
committermarha <marha@users.sourceforge.net>2013-02-13 11:03:57 +0100
commit8fa17b13062c1e2acca542cc7a2ccb09aca874e8 (patch)
tree158a6239b0fdf2abf63fb7365b4cd4886c15f5b1 /pthreads/sem_getvalue.c
parent4a165ef2f762a4ce9155f2a3626692326bda616d (diff)
parentb41f74438672dd682bc01ae818cb3da654f22c1e (diff)
downloadvcxsrv-8fa17b13062c1e2acca542cc7a2ccb09aca874e8.tar.gz
vcxsrv-8fa17b13062c1e2acca542cc7a2ccb09aca874e8.tar.bz2
vcxsrv-8fa17b13062c1e2acca542cc7a2ccb09aca874e8.zip
Merge remote-tracking branch 'origin/released'
* origin/released: Updated to latest CVS version of pthreads Conflicts: pthreads/Makefile
Diffstat (limited to 'pthreads/sem_getvalue.c')
-rw-r--r--pthreads/sem_getvalue.c53
1 files changed, 31 insertions, 22 deletions
diff --git a/pthreads/sem_getvalue.c b/pthreads/sem_getvalue.c
index baafb02cf..704af1260 100644
--- a/pthreads/sem_getvalue.c
+++ b/pthreads/sem_getvalue.c
@@ -15,10 +15,11 @@
*
* Pthreads-win32 - POSIX Threads Library for Win32
* Copyright(C) 1998 John E. Bossom
- * Copyright(C) 1999,2005 Pthreads-win32 contributors
- *
- * Contact Email: rpj@callisto.canberra.edu.au
- *
+ * Copyright(C) 1999,2012 Pthreads-win32 contributors
+ *
+ * Homepage1: http://sourceware.org/pthreads-win32/
+ * Homepage2: http://sourceforge.net/projects/pthreads4w/
+ *
* The current list of contributors is contained
* in the file CONTRIBUTORS included with the source
* code distribution. The list can also be seen at the
@@ -41,6 +42,10 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
#include "pthread.h"
#include "semaphore.h"
#include "implement.h"
@@ -77,34 +82,38 @@ sem_getvalue (sem_t * sem, int *sval)
* pointed to by sem in the int pointed to by sval.
*/
{
- if (sem == NULL || *sem == NULL || sval == NULL)
+ int result = 0;
+
+ if (NULL == sem || NULL == *sem || NULL == sval)
{
- errno = EINVAL;
- return -1;
+ result = EINVAL;
}
else
{
- long value;
register sem_t s = *sem;
- int result = 0;
if ((result = pthread_mutex_lock(&s->lock)) == 0)
{
- /* See sem_destroy.c
- */
- if (*sem == NULL)
- {
- (void) pthread_mutex_unlock (&s->lock);
- errno = EINVAL;
- return -1;
- }
-
- value = s->value;
- (void) pthread_mutex_unlock(&s->lock);
- *sval = value;
+ /*
+ * See sem_destroy.c
+ */
+ if (*sem == NULL /* don't test 's' here */)
+ {
+ result = EINVAL;
+ }
+ else
+ {
+ *sval = s->value;
+ }
+ (void) pthread_mutex_unlock (&s->lock);
}
+ }
- return result;
+ if (result != 0)
+ {
+ PTW32_SET_ERRNO(result);
+ return -1;
}
+ return 0;
} /* sem_getvalue */