summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog7
-rw-r--r--winsup/cygwin/include/cygwin/stdlib.h5
2 files changed, 9 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 6eb0d1d68..23357a123 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,10 @@
+2015-02-19 Jon TURNEY <jon.turney@dronecode.org.uk>
+
+ * include/cygwin/stdlib.h (initstate, random, setstate, srandom):
+ Check if __XSI_VISIBLE is set by sys/cdefs.h, rather than testing
+ for _XOPEN_SOURCE directly, to work correctly when _GNU_SOURCE is
+ set.
+
2015-02-19 Corinna Vinschen <corinna@vinschen.de>
* sec_acl.cc (setacl): Always grant owner FILE_WRITE_ATTRIBUTES access.
diff --git a/winsup/cygwin/include/cygwin/stdlib.h b/winsup/cygwin/include/cygwin/stdlib.h
index 4d652fd5f..62792cf69 100644
--- a/winsup/cygwin/include/cygwin/stdlib.h
+++ b/winsup/cygwin/include/cygwin/stdlib.h
@@ -11,6 +11,7 @@ details. */
#ifndef _CYGWIN_STDLIB_H
#define _CYGWIN_STDLIB_H
+#include <sys/cdefs.h>
#include <cygwin/wait.h>
#ifdef __cplusplus
@@ -31,9 +32,7 @@ void setprogname (const char *);
char *canonicalize_file_name (const char *);
int unsetenv (const char *);
#endif /*__STRICT_ANSI__*/
-#if !defined(__STRICT_ANSI__) \
- || (defined(_XOPEN_SOURCE) \
- && ((_XOPEN_SOURCE - 0 >= 500) || defined(_XOPEN_SOURCE_EXTENDED)))
+#if !defined(__STRICT_ANSI__) || (__XSI_VISIBLE >= 500)
char *initstate (unsigned seed, char *state, size_t size);
long random (void);
char *setstate (const char *state);