[Python-Dev] Const-correctness in C-API Object Protocol
Eric Smith
eric at trueblade.com
Tue Feb 22 20:09:56 CET 2011
On 02/22/2011 01:55 PM, Brett Cannon wrote:
>
>
> On Mon, Feb 21, 2011 at 15:34, David Claridge <daave at daave.com
> <mailto:daave at daave.com>> wrote:
>
> Hi,
>
> I was wondering if there is some reason why C API functions like
> PyObject_CallMethod[1] and PySys_GetObject[2] take char* arguments
> rather than const char*s? If there is some reason these methods will
> modify their string arguments, it would be nice if it was documented,
> because at the moment it's unclear whether it is safe to cast a string
> literal to char* in these cases. For instance it seems reasonable that
> I should be able to call PySys_GetObject("path") without having to
> deal with a 'deprecated conversion from string constant to ‘char*’'
> error.
>
>
> Probably because (a) the person who first wrote them used char* instead
> of const char*, and (b) it gives us API flexibility by not promising to
> not alter the char array at some point in the future.
Also changing it now would be a giant hassle, leading to so-called
"const poisoning" where many, many APIs need to be changed before
everything would again work.
More information about the Python-Dev
mailing list