mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +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
|
@ -1478,6 +1478,22 @@ make_version_info(void)
|
|||
return version_info;
|
||||
}
|
||||
|
||||
/* sys.implementation values */
|
||||
#define NAME "cpython"
|
||||
const char *_PySys_ImplName = NAME;
|
||||
#define QUOTE(arg) #arg
|
||||
#define STRIFY(name) QUOTE(name)
|
||||
#define MAJOR STRIFY(PY_MAJOR_VERSION)
|
||||
#define MINOR STRIFY(PY_MINOR_VERSION)
|
||||
#define TAG NAME "-" MAJOR MINOR;
|
||||
const char *_PySys_ImplCacheTag = TAG;
|
||||
#undef NAME
|
||||
#undef QUOTE
|
||||
#undef STRIFY
|
||||
#undef MAJOR
|
||||
#undef MINOR
|
||||
#undef TAG
|
||||
|
||||
static PyObject *
|
||||
make_impl_info(PyObject *version_info)
|
||||
{
|
||||
|
@ -1490,13 +1506,7 @@ make_impl_info(PyObject *version_info)
|
|||
|
||||
/* populate the dict */
|
||||
|
||||
#define NAME "cpython"
|
||||
#define QUOTE(arg) #arg
|
||||
#define STRIFY(name) QUOTE(name)
|
||||
#define MAJOR STRIFY(PY_MAJOR_VERSION)
|
||||
#define MINOR STRIFY(PY_MINOR_VERSION)
|
||||
#define TAG NAME "-" MAJOR MINOR
|
||||
value = PyUnicode_FromString(NAME);
|
||||
value = PyUnicode_FromString(_PySys_ImplName);
|
||||
if (value == NULL)
|
||||
goto error;
|
||||
res = PyDict_SetItemString(impl_info, "name", value);
|
||||
|
@ -1504,19 +1514,13 @@ make_impl_info(PyObject *version_info)
|
|||
if (res < 0)
|
||||
goto error;
|
||||
|
||||
value = PyUnicode_FromString(TAG);
|
||||
value = PyUnicode_FromString(_PySys_ImplCacheTag);
|
||||
if (value == NULL)
|
||||
goto error;
|
||||
res = PyDict_SetItemString(impl_info, "cache_tag", value);
|
||||
Py_DECREF(value);
|
||||
if (res < 0)
|
||||
goto error;
|
||||
#undef NAME
|
||||
#undef QUOTE
|
||||
#undef STRIFY
|
||||
#undef MAJOR
|
||||
#undef MINOR
|
||||
#undef TAG
|
||||
|
||||
res = PyDict_SetItemString(impl_info, "version", version_info);
|
||||
if (res < 0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue