diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2011-11-07 12:00:05 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2011-11-07 12:00:05 (GMT) |
commit | d10759f6edb713e945d1caf19d74ea4e12da7894 (patch) | |
tree | 81ca1ffcbe397faaa4119100a44dc3c21668da9c | |
parent | e9b11c1cd8ad68e829ae627ef48bdbc940f8e7fb (diff) | |
download | cpython-d10759f6edb713e945d1caf19d74ea4e12da7894.zip cpython-d10759f6edb713e945d1caf19d74ea4e12da7894.tar.gz cpython-d10759f6edb713e945d1caf19d74ea4e12da7894.tar.bz2 |
Make _PyUnicode_FromId return borrowed references.
http://mail.python.org/pipermail/python-dev/2011-November/114347.html
-rw-r--r-- | Include/unicodeobject.h | 2 | ||||
-rw-r--r-- | Objects/object.c | 9 | ||||
-rw-r--r-- | Objects/typeobject.c | 3 | ||||
-rw-r--r-- | Objects/unicodeobject.c | 1 | ||||
-rw-r--r-- | Python/_warnings.c | 2 |
5 files changed, 5 insertions, 12 deletions
diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h index 58c1f55..c445ad6 100644 --- a/Include/unicodeobject.h +++ b/Include/unicodeobject.h @@ -2024,7 +2024,7 @@ PyAPI_FUNC(int) _PyUnicode_CheckConsistency( shutdown, all strings are released (through _PyUnicode_ClearStaticStrings). Alternatively, _Py_static_string allows to choose the variable name. - _PyUnicode_FromId returns a new reference to the interned string. + _PyUnicode_FromId returns a borrowed reference to the interned string. _PyObject_{Get,Set,Has}AttrId are __getattr__ versions using _Py_Identifier*. */ typedef struct _Py_Identifier { diff --git a/Objects/object.c b/Objects/object.c index 7db60f3..51188b7 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -814,11 +814,10 @@ PyObject * _PyObject_GetAttrId(PyObject *v, _Py_Identifier *name) { PyObject *result; - PyObject *oname = _PyUnicode_FromId(name); + PyObject *oname = _PyUnicode_FromId(name); /* borrowed */ if (!oname) return NULL; result = PyObject_GetAttr(v, oname); - Py_DECREF(oname); return result; } @@ -826,11 +825,10 @@ int _PyObject_HasAttrId(PyObject *v, _Py_Identifier *name) { int result; - PyObject *oname = _PyUnicode_FromId(name); + PyObject *oname = _PyUnicode_FromId(name); /* borrowed */ if (!oname) return -1; result = PyObject_HasAttr(v, oname); - Py_DECREF(oname); return result; } @@ -838,11 +836,10 @@ int _PyObject_SetAttrId(PyObject *v, _Py_Identifier *name, PyObject *w) { int result; - PyObject *oname = _PyUnicode_FromId(name); + PyObject *oname = _PyUnicode_FromId(name); /* borrowed */ if (!oname) return -1; result = PyObject_SetAttr(v, oname, w); - Py_DECREF(oname); return result; } diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 6b60c8f..2ca1b8f 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1716,11 +1716,10 @@ get_dict_descriptor(PyTypeObject *type) PyObject *dict_str; PyObject *descr; - dict_str = _PyUnicode_FromId(&PyId___dict__); + dict_str = _PyUnicode_FromId(&PyId___dict__); /* borrowed */ if (dict_str == NULL) return NULL; descr = _PyType_Lookup(type, dict_str); - Py_DECREF(dict_str); if (descr == NULL || !PyDescr_IsData(descr)) return NULL; diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 8f82502..3c14b6b 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -1723,7 +1723,6 @@ _PyUnicode_FromId(_Py_Identifier *id) id->next = static_strings; static_strings = id; } - Py_INCREF(id->object); return id->object; } diff --git a/Python/_warnings.c b/Python/_warnings.c index 5846426..2e5b0dd 100644 --- a/Python/_warnings.c +++ b/Python/_warnings.c @@ -666,10 +666,8 @@ warnings_warn_explicit(PyObject *self, PyObject *args, PyObject *kwds) if ((tmp = _PyUnicode_FromId(&PyId_get_source)) == NULL) return NULL; - Py_DECREF(tmp); if ((tmp = _PyUnicode_FromId(&PyId_splitlines)) == NULL) return NULL; - Py_DECREF(tmp); /* Check/get the requisite pieces needed for the loader. */ loader = PyDict_GetItemString(module_globals, "__loader__"); |