[Python-checkins] bpo-35550: Fix incorrect Solaris define guards (GH-11275)

Miss Islington (bot) webhook-mailer at python.org
Sun Dec 30 21:39:04 EST 2018


https://github.com/python/cpython/commit/d82344378ad8e471b8ed12fb99807f68351c5412
commit: d82344378ad8e471b8ed12fb99807f68351c5412
branch: 3.7
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2018-12-30T18:39:00-08:00
summary:

bpo-35550: Fix incorrect Solaris define guards (GH-11275)


Python source code uses on several places ifdef sun or defined(sun) without the underscores, which is not standard compliant and shouldn't be used.

Defines should check for __sun instead. Reference: http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_systemGH-Solaris

https://bugs.python.org/issue35550
(cherry picked from commit 6f9bc72c79c3262e5d0f2c0e96b016477399cfb1)

Co-authored-by: Jakub Kulík <Kulikjak at gmail.com>

files:
A Misc/NEWS.d/next/Build/2018-12-29-10-19-43.bpo-35550.BTuu8e.rst
M Modules/_posixsubprocess.c
M Modules/posixmodule.c
M Modules/socketmodule.c
M Modules/timemodule.c
M Python/bootstrap_hash.c

diff --git a/Misc/NEWS.d/next/Build/2018-12-29-10-19-43.bpo-35550.BTuu8e.rst b/Misc/NEWS.d/next/Build/2018-12-29-10-19-43.bpo-35550.BTuu8e.rst
new file mode 100644
index 000000000000..8a6b90d5970e
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2018-12-29-10-19-43.bpo-35550.BTuu8e.rst
@@ -0,0 +1 @@
+Fix incorrect Solaris #ifdef checks to look for __sun && __SVR4 instead of sun when compiling.
\ No newline at end of file
diff --git a/Modules/_posixsubprocess.c b/Modules/_posixsubprocess.c
index 851aa9777168..3cf0683ad98b 100644
--- a/Modules/_posixsubprocess.c
+++ b/Modules/_posixsubprocess.c
@@ -30,7 +30,7 @@
 # define SYS_getdents64  __NR_getdents64
 #endif
 
-#if defined(sun)
+#if defined(__sun) && defined(__SVR4)
 /* readdir64 is used to work around Solaris 9 bug 6395699. */
 # define readdir readdir64
 # define dirent dirent64
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 383999ea8492..909b06e5a9dd 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -5926,7 +5926,7 @@ os_openpty_impl(PyObject *module)
 #endif
 #if defined(HAVE_DEV_PTMX) && !defined(HAVE_OPENPTY) && !defined(HAVE__GETPTY)
     PyOS_sighandler_t sig_saved;
-#ifdef sun
+#if defined(__sun) && defined(__SVR4)
     extern char *ptsname(int fildes);
 #endif
 #endif
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 661e1bdf5784..988471e15fbe 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -265,7 +265,7 @@ if_indextoname(index) -- return the corresponding interface name\n\
 #endif
 
 /* Solaris fails to define this variable at all. */
-#if defined(sun) && !defined(INET_ADDRSTRLEN)
+#if (defined(__sun) && defined(__SVR4)) && !defined(INET_ADDRSTRLEN)
 #define INET_ADDRSTRLEN 16
 #endif
 
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 5e99bd82d1de..bbfb7db7abde 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -725,7 +725,7 @@ time_strftime(PyObject *self, PyObject *args)
         return NULL;
     }
 
-#if defined(_MSC_VER) || defined(sun) || defined(_AIX)
+#if defined(_MSC_VER) || (defined(__sun) && defined(__SVR4)) || defined(_AIX)
     if (buf.tm_year + 1900 < 1 || 9999 < buf.tm_year + 1900) {
         PyErr_SetString(PyExc_ValueError,
                         "strftime() requires year in [1; 9999]");
@@ -771,7 +771,7 @@ time_strftime(PyObject *self, PyObject *args)
             return NULL;
         }
     }
-#elif (defined(_AIX) || defined(sun)) && defined(HAVE_WCSFTIME)
+#elif (defined(_AIX) || (defined(__sun) && defined(__SVR4))) && defined(HAVE_WCSFTIME)
     for (outbuf = wcschr(fmt, '%');
         outbuf != NULL;
         outbuf = wcschr(outbuf+2, '%'))
diff --git a/Python/bootstrap_hash.c b/Python/bootstrap_hash.c
index e2afba2b2e33..58b0802f4668 100644
--- a/Python/bootstrap_hash.c
+++ b/Python/bootstrap_hash.c
@@ -116,7 +116,7 @@ py_getrandom(void *buffer, Py_ssize_t size, int blocking, int raise)
     flags = blocking ? 0 : GRND_NONBLOCK;
     dest = buffer;
     while (0 < size) {
-#ifdef sun
+#if defined(__sun) && defined(__SVR4)
         /* Issue #26735: On Solaris, getrandom() is limited to returning up
            to 1024 bytes. Call it multiple times if more bytes are
            requested. */
@@ -266,7 +266,7 @@ py_getentropy(char *buffer, Py_ssize_t size, int raise)
     }
     return 1;
 }
-#endif /* defined(HAVE_GETENTROPY) && !defined(sun) */
+#endif /* defined(HAVE_GETENTROPY) && !(defined(__sun) && defined(__SVR4)) */
 
 
 static struct {



More information about the Python-checkins mailing list