From: Brett Cannon Date: Thu, 2 Apr 2009 03:17:39 +0000 (+0000) Subject: PyImport_AppendInittab() took a char * as a first argument even though that X-Git-Tag: v2.7a1~1606 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c4f90ebea78fab0d45340f4fb4b11298ee3ffdca;p=python PyImport_AppendInittab() took a char * as a first argument even though that string was stored beyond the life of the call. Changed the signature to be const char * to help make this point. Closes issue #1419652. --- diff --git a/Doc/c-api/import.rst b/Doc/c-api/import.rst index c4816f5ed9..bed6089dde 100644 --- a/Doc/c-api/import.rst +++ b/Doc/c-api/import.rst @@ -232,7 +232,7 @@ Importing Modules tricks with this to provide a dynamically created collection of frozen modules. -.. cfunction:: int PyImport_AppendInittab(char *name, void (*initfunc)(void)) +.. cfunction:: int PyImport_AppendInittab(const char *name, void (*initfunc)(void)) Add a single module to the existing table of built-in modules. This is a convenience wrapper around :cfunc:`PyImport_ExtendInittab`, returning ``-1`` if diff --git a/Misc/NEWS b/Misc/NEWS index 6bf6dcd681..036a061c84 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -692,6 +692,9 @@ Build C-API ----- +- Issue #1419652: Change the first argument to PyImport_AppendInittab() to + ``const char *`` as the string is stored beyond the call. + - Some PyBytes_* aliases have been removed because they don't exist in 3.x. - Issue #5175: PyLong_AsUnsignedLongLong now raises OverflowError diff --git a/Python/import.c b/Python/import.c index 98b8dceba4..b39cb18f23 100644 --- a/Python/import.c +++ b/Python/import.c @@ -3376,7 +3376,7 @@ PyImport_ExtendInittab(struct _inittab *newtab) /* Shorthand to add a single entry given a name and a function */ int -PyImport_AppendInittab(char *name, void (*initfunc)(void)) +PyImport_AppendInittab(const char *name, void (*initfunc)(void)) { struct _inittab newtab[2];