Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Closed
Description
This code produces an error with a somewhat unhelpful message:
fromctypesimport*printf=CDLL('libc.so.6').printfprintf.argtypes= [c_char_p,c_char_p]printf(b"Value %s\n",10)# call with an incompatible argument
Traceback (mostrecentcalllast):File"/home/tomas/dev/cpython/error.py",line5,in<module>printf(b"Value: %s\n",10)ctypes.ArgumentError:argument2:TypeError:wrongtype
The source code itself suggests providing a better message:
cpython/Modules/_ctypes/_ctypes.c
Lines 1795 to 1797 in3979150
| /* XXX better message */ | |
| PyErr_SetString(PyExc_TypeError, | |
| "wrong type"); |
I suggest making the message more helpful by including the expected argument type and the type that was actually provided e.g.
- TypeError: wrong type+ TypeError: 'int' object cannot be interpreted as ctypes.c_char_p
The same improvement can be applied toc_wchar_p andc_void_p.