summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/thread.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/thread.cc')
-rw-r--r--winsup/cygwin/thread.cc14
1 files changed, 12 insertions, 2 deletions
diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc
index 0256ad717..0e0d30127 100644
--- a/winsup/cygwin/thread.cc
+++ b/winsup/cygwin/thread.cc
@@ -3443,9 +3443,19 @@ semaphore::_getvalue (int *sval)
status = NtQuerySemaphore (win32_obj_id, SemaphoreBasicInformation, &sbi,
sizeof sbi, NULL);
+ int res;
if (NT_SUCCESS (status))
- return sbi.CurrentCount;
- return startvalue;
+ {
+ *sval = sbi.CurrentCount;
+ res = 0;
+ }
+ else
+ {
+ *sval = startvalue;
+ __seterrno_from_nt_status (status);
+ res = -1;
+ }
+ return res;
}
int