On 02/22/2011 01:55 PM, Brett Cannon wrote:


On Mon, Feb 21, 2011 at 15:34, David Claridge <da...@daave.com
<mailto:da...@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.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to