]> granicus.if.org Git - python/commitdiff
bpo-30470: Deprecate invalid ctypes call protection on Windows. (GH-1810)
authorMariatta <Mariatta@users.noreply.github.com>
Sat, 27 May 2017 14:23:26 +0000 (07:23 -0700)
committerGitHub <noreply@github.com>
Sat, 27 May 2017 14:23:26 +0000 (07:23 -0700)
Calling Ctypes functions is deprecated in 3.6.2 and will be removed in 3.7

Doc/library/ctypes.rst
Misc/NEWS

index b18ce93979ce726c5a6ffcc0aa8f99d20ff58185..edec764d640ed62cb74c3711953c3f627603b56f 100644 (file)
@@ -161,22 +161,14 @@ as the NULL pointer)::
    0x1d000000
    >>>
 
-:mod:`ctypes` tries to protect you from calling functions with the wrong number
-of arguments or the wrong calling convention.  Unfortunately this only works on
-Windows.  It does this by examining the stack after the function returns, so
-although an error is raised the function *has* been called::
+.. note::
 
-   >>> windll.kernel32.GetModuleHandleA()      # doctest: +WINDOWS
-   Traceback (most recent call last):
-     File "<stdin>", line 1, in <module>
-   ValueError: Procedure probably called with not enough arguments (4 bytes missing)
-   >>> windll.kernel32.GetModuleHandleA(0, 0)  # doctest: +WINDOWS
-   Traceback (most recent call last):
-     File "<stdin>", line 1, in <module>
-   ValueError: Procedure probably called with too many arguments (4 bytes in excess)
-   >>>
+   :mod:`ctypes` may raise a :exc:`ValueError` after calling the function, if
+   it detects that an invalid number of arguments were passed.  This behavior
+   should not be relied upon.  It is deprecated in 3.6.2, and will be removed
+   in 3.7.
 
-The same exception is raised when you call an ``stdcall`` function with the
+:exc:`ValueError` is raised when you call an ``stdcall`` function with the
 ``cdecl`` calling convention, or vice versa::
 
    >>> cdll.kernel32.GetModuleHandleA(None)  # doctest: +WINDOWS
index 98d508a34db37eff0a889a7148152c2ce487bcb3..e9fe37f893150b4a1522301254c02a274c09efef 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -341,6 +341,9 @@ Extension Modules
 Library
 -------
 
+- bpo-30470: Deprecate invalid ctypes call protection on Windows.  Patch by
+  Mariatta Wijaya.
+
 - bpo-30414: multiprocessing.Queue._feed background running
   thread do not break from main loop on exception.