Warn abou missing mutate flag to ioctl. Fixes #696535.
diff --git a/Doc/whatsnew/whatsnew24.tex b/Doc/whatsnew/whatsnew24.tex
index a394971..638eadb 100644
--- a/Doc/whatsnew/whatsnew24.tex
+++ b/Doc/whatsnew/whatsnew24.tex
@@ -669,6 +669,8 @@
system ID in the wrong order. This has been corrected; applications
relying on the wrong order need to be fixed.
+\item \function{fcntl.ioctl} now warns if the mutate arg is omitted.
+
\end{itemize}
diff --git a/Misc/NEWS b/Misc/NEWS
index a4dd8a1..304c3be 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -214,6 +214,8 @@
Extension modules
-----------------
+- fcntl.ioctl now warns if the mutate flag is not specified.
+
- nt now properly allows to refer to UNC roots, e.g. in nt.stat().
- the weakref module now supports additional objects: array.array,
diff --git a/Modules/fcntlmodule.c b/Modules/fcntlmodule.c
index 9894c43..43f1773 100644
--- a/Modules/fcntlmodule.c
+++ b/Modules/fcntlmodule.c
@@ -108,7 +108,13 @@
char *arg;
if (PyTuple_Size(args) == 3) {
- /* warning goes here in 2.4 */
+#if (PY_MAJOR_VERSION>2) || (PY_MINOR_VERSION>=5)
+#error Remove the warning, change mutate_arg to 1
+#endif
+ if (PyErr_Warn(PyExc_FutureWarning,
+ "ioctl with mutable buffer will mutate the buffer by default in 2.5"
+ ) < 0)
+ return NULL;
mutate_arg = 0;
}
if (mutate_arg) {