components/python/python35/patches/11-closerange.patch
author John Beck <John.Beck@Oracle.COM>
Thu, 21 Jul 2016 12:52:32 -0700
changeset 6447 56a2f066191a
parent 5184 6c2a9525f3a4
child 7648 20e09cf3cfaa
permissions -rw-r--r--
23858083 Upgrade Python to 3.5.2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4912
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     1
This patch uses fdwalk(3c) to close file descriptors; as that function is not
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     2
widely implemented, this is unsuitable for upstream.
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     3
6447
56a2f066191a 23858083 Upgrade Python to 3.5.2
John Beck <John.Beck@Oracle.COM>
parents: 5184
diff changeset
     4
--- Python-3.5.2/Modules/posixmodule.c.~1~	2016-06-25 14:38:38.000000000 -0700
56a2f066191a 23858083 Upgrade Python to 3.5.2
John Beck <John.Beck@Oracle.COM>
parents: 5184
diff changeset
     5
+++ Python-3.5.2/Modules/posixmodule.c	2016-07-08 06:58:01.808943682 -0700
56a2f066191a 23858083 Upgrade Python to 3.5.2
John Beck <John.Beck@Oracle.COM>
parents: 5184
diff changeset
     6
@@ -7779,6 +7779,19 @@
4912
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     7
     Py_RETURN_NONE;
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     8
 }
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     9
 
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    10
+static int
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    11
+close_func(void *lohi, int fd)
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    12
+{
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    13
+    int lo = ((int *)lohi)[0];
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    14
+    int hi = ((int *)lohi)[1];
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    15
+
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    16
+    if (fd >= hi)
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    17
+        return (1);
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    18
+    else if (fd >= lo)
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    19
+        close(fd);
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    20
+
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    21
+    return (0);
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    22
+}
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    23
 
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    24
 /*[clinic input]
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    25
 os.closerange
6447
56a2f066191a 23858083 Upgrade Python to 3.5.2
John Beck <John.Beck@Oracle.COM>
parents: 5184
diff changeset
    26
@@ -7795,11 +7808,13 @@
4912
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    27
 /*[clinic end generated code: output=70e6adb95220ba96 input=5855a3d053ebd4ec]*/
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    28
 {
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    29
     int i;
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    30
+    int lohi[2];
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    31
+
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    32
     Py_BEGIN_ALLOW_THREADS
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    33
     _Py_BEGIN_SUPPRESS_IPH
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    34
-    for (i = fd_low; i < fd_high; i++)
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    35
-        if (_PyVerify_fd(i))
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    36
-            close(i);
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    37
+    lohi[0] = fd_low;
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    38
+    lohi[1] = fd_high;
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    39
+    fdwalk(close_func, lohi);
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    40
     _Py_END_SUPPRESS_IPH
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    41
     Py_END_ALLOW_THREADS
0b79e9575718 PSARC 2015/414 Python 3.5
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    42
     Py_RETURN_NONE;