• Jeremy Hylton's avatar
    Add const to several API functions that take char *. · af68c874
    Jeremy Hylton yazdı
    In C++, it's an error to pass a string literal to a char* function
    without a const_cast().  Rather than require every C++ extension
    module to put a cast around string literals, fix the API to state the
    const-ness.
    
    I focused on parts of the API where people usually pass literals:
    PyArg_ParseTuple() and friends, Py_BuildValue(), PyMethodDef, the type
    slots, etc.  Predictably, there were a large set of functions that
    needed to be fixed as a result of these changes.  The most pervasive
    change was to make the keyword args list passed to
    PyArg_ParseTupleAndKewords() to be a const char *kwlist[].
    
    One cast was required as a result of the changes:  A type object
    mallocs the memory for its tp_doc slot and later frees it.
    PyTypeObject says that tp_doc is const char *; but if the type was
    created by type_new(), we know it is safe to cast to char *.
    af68c874
boolobject.c 4.79 KB