components/python/python27/patches/11-closerange.patch
author John Beck <John.Beck@Oracle.COM>
Sat, 04 Oct 2014 14:50:43 -0700
branchs11-update
changeset 3367 ed5024e47b53
parent 578 components/python/python27/patches/10-closerange.patch@4f51372decaf
permissions -rw-r--r--
PSARC 2014/183 Python 2.7.6 18251953 update Python 2.7 line to version 2.7.6 19004605 update Python 2.7 line to version 2.7.7 19308541 update Python 2.7 line to version 2.7.8 19284990 python 2.7.7 segfaults while under memory stress 17431625 64-bit python should use long rather than int for os.sysconf() return value 19164544 Python 2.7 test_tcl fails 19030238 Python 2.7 test_sysconfig fails - no module named _osx_support 19030198 Python 2.7 tests fail - import name error 19032456 more Python 2.7 tests failing with import errors 19022543 Python 2.7 test_lib2to3 fails
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3367
ed5024e47b53 PSARC 2014/183 Python 2.7.6
John Beck <John.Beck@Oracle.COM>
parents: 578
diff changeset
     1
This patch uses fdwalk(3c) to close file descriptors; as that function is not
ed5024e47b53 PSARC 2014/183 Python 2.7.6
John Beck <John.Beck@Oracle.COM>
parents: 578
diff changeset
     2
widely implemented, this is unsuitable for upstream.
ed5024e47b53 PSARC 2014/183 Python 2.7.6
John Beck <John.Beck@Oracle.COM>
parents: 578
diff changeset
     3
ed5024e47b53 PSARC 2014/183 Python 2.7.6
John Beck <John.Beck@Oracle.COM>
parents: 578
diff changeset
     4
--- Python-2.7.7/Modules/posixmodule.c.~1~	2014-05-31 11:58:40.000000000 -0700
ed5024e47b53 PSARC 2014/183 Python 2.7.6
John Beck <John.Beck@Oracle.COM>
parents: 578
diff changeset
     5
+++ Python-2.7.7/Modules/posixmodule.c	2014-06-02 10:49:30.052826955 -0700
ed5024e47b53 PSARC 2014/183 Python 2.7.6
John Beck <John.Beck@Oracle.COM>
parents: 578
diff changeset
     6
@@ -6607,16 +6607,34 @@
578
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     7
 "closerange(fd_low, fd_high)\n\n\
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     8
 Closes all file descriptors in [fd_low, fd_high), ignoring errors.");
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     9
 
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    10
+static int
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    11
+close_func(void *lohi, int fd)
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    12
+{
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    13
+    int lo = ((int *)lohi)[0];
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    14
+    int hi = ((int *)lohi)[1];
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    15
+
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    16
+    if (fd >= hi)
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    17
+        return (1);
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    18
+    else if (fd >= lo)
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    19
+        close(fd);
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    20
+
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    21
+    return (0);
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    22
+}
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    23
+
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    24
 static PyObject *
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    25
 posix_closerange(PyObject *self, PyObject *args)
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    26
 {
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    27
     int fd_from, fd_to, i;
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    28
+    int lohi[2];
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    29
+
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    30
     if (!PyArg_ParseTuple(args, "ii:closerange", &fd_from, &fd_to))
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    31
         return NULL;
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    32
     Py_BEGIN_ALLOW_THREADS
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    33
-    for (i = fd_from; i < fd_to; i++)
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    34
-        if (_PyVerify_fd(i))
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    35
-            close(i);
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    36
+
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    37
+    lohi[0] = fd_from;
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    38
+    lohi[1] = fd_to;
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    39
+    fdwalk(close_func, lohi);
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    40
+
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    41
     Py_END_ALLOW_THREADS
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    42
     Py_RETURN_NONE;
4f51372decaf 7053223 python needs lint libraries
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    43
 }