1From d7217b79a4e125d4fcc1087743171b94d91d1121 Mon Sep 17 00:00:00 2001 2From: Inada Naoki <songofacandy@gmail.com> 3Date: Sat, 14 Jul 2018 00:46:11 +0900 4Subject: [PATCH] Use FLAG_REF always for interned strings 5 6Upstream-Status: Submitted [https://github.com/python/cpython/pull/8226] 7Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> 8 9--- 10 Python/marshal.c | 9 +++++++-- 11 1 file changed, 7 insertions(+), 2 deletions(-) 12 13diff --git a/Python/marshal.c b/Python/marshal.c 14index 4125240..341c9aa 100644 15--- a/Python/marshal.c 16+++ b/Python/marshal.c 17@@ -298,9 +298,14 @@ w_ref(PyObject *v, char *flag, WFILE *p) 18 if (p->version < 3 || p->hashtable == NULL) 19 return 0; /* not writing object references */ 20 21- /* if it has only one reference, it definitely isn't shared */ 22- if (Py_REFCNT(v) == 1) 23+ /* If it has only one reference, it definitely isn't shared. 24+ * But we use TYPE_REF always for interned string, to PYC file stable 25+ * as possible. 26+ */ 27+ if (Py_REFCNT(v) == 1 && 28+ !(PyUnicode_CheckExact(v) && PyUnicode_CHECK_INTERNED(v))) { 29 return 0; 30+ } 31 32 entry = _Py_hashtable_get_entry(p->hashtable, v); 33 if (entry != NULL) { 34