summaryrefslogtreecommitdiffstats
path: root/Python/sysmodule.c
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2012-07-09 18:22:12 (GMT)
committerBrett Cannon <brett@python.org>2012-07-09 18:22:12 (GMT)
commit3adc7b75a5f35003b3b91de113b5212748dc1a1d (patch)
tree72266f59b330e725759c32ff03e7269e68b8c712 /Python/sysmodule.c
parent903c27c177f54099e0c07e2244b0cce41e7aec54 (diff)
downloadcpython-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/sysmodule.c')
-rw-r--r--Python/sysmodule.c32
1 files changed, 18 insertions, 14 deletions
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index ce5e825..20bfa55 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -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)