diff options
author | Brett Cannon <brett@python.org> | 2012-07-09 18:22:12 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2012-07-09 18:22:12 (GMT) |
commit | 3adc7b75a5f35003b3b91de113b5212748dc1a1d (patch) | |
tree | 72266f59b330e725759c32ff03e7269e68b8c712 /Python/import.c | |
parent | 903c27c177f54099e0c07e2244b0cce41e7aec54 (diff) | |
download | cpython-3adc7b75a5f35003b3b91de113b5212748dc1a1d.zip cpython-3adc7b75a5f35003b3b91de113b5212748dc1a1d.tar.gz cpython-3adc7b75a5f35003b3b91de113b5212748dc1a1d.tar.bz2 |
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.
Diffstat (limited to 'Python/import.c')
-rw-r--r-- | Python/import.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/Python/import.c b/Python/import.c index c31819d..1592045 100644 --- a/Python/import.c +++ b/Python/import.c @@ -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; } |