mirror of
https://github.com/python/cpython.git
synced 2025-10-21 14:12:27 +00:00
Issue #15242: Have PyImport_GetMagicTag() return a const char *
defined in sysmodule.c instead of straight out of a Unicode object. Thanks to Amaury Forgeot d'Arc for noticing the bug and Eric Snow for writing the patch.
This commit is contained in:
parent
903c27c177
commit
3adc7b75a5
3 changed files with 24 additions and 29 deletions
|
@ -116,7 +116,7 @@ typedef unsigned short mode_t;
|
|||
*/
|
||||
#define MAGIC (3230 | ((long)'\r'<<16) | ((long)'\n'<<24))
|
||||
#define CACHEDIR "__pycache__"
|
||||
/* Current magic word and string tag as globals. */
|
||||
/* Current magic word as global. */
|
||||
static long pyc_magic = MAGIC;
|
||||
|
||||
/* See _PyImport_FixupExtensionObject() below */
|
||||
|
@ -520,22 +520,12 @@ PyImport_GetMagicNumber(void)
|
|||
}
|
||||
|
||||
|
||||
extern const char * _PySys_ImplCacheTag;
|
||||
|
||||
const char *
|
||||
PyImport_GetMagicTag(void)
|
||||
{
|
||||
PyObject *impl, *tag;
|
||||
const char *raw_tag;
|
||||
|
||||
/* We could also pull it from imp or importlib. */
|
||||
impl = PySys_GetObject("implementation");
|
||||
if (impl == NULL)
|
||||
return NULL;
|
||||
tag = PyObject_GetAttrString(impl, "cache_tag");
|
||||
if (tag == NULL)
|
||||
return NULL;
|
||||
raw_tag = PyUnicode_DATA(tag);
|
||||
Py_DECREF(tag);
|
||||
return raw_tag;
|
||||
return _PySys_ImplCacheTag;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue