diff options
author | Georg Brandl <georg@python.org> | 2008-06-10 16:57:31 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2008-06-10 16:57:31 (GMT) |
commit | f08a9ddcb756a4c036e3a9b018c0fdd27e5f27ce (patch) | |
tree | 1f9a120dc94ec87fe3238ebfd78ef98fea3026f7 /Objects | |
parent | 250788453fa64adef423b4f5b0294922c91a4c46 (diff) | |
download | cpython-f08a9ddcb756a4c036e3a9b018c0fdd27e5f27ce.zip cpython-f08a9ddcb756a4c036e3a9b018c0fdd27e5f27ce.tar.gz cpython-f08a9ddcb756a4c036e3a9b018c0fdd27e5f27ce.tar.bz2 |
Merged revisions 63724,63726,63732,63744,63754-63755,63757-63758,63760,63775,63781-63782,63787,63805-63808,63818-63819,63823-63824 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r63724 | gregory.p.smith | 2008-05-26 22:22:14 +0200 (Mon, 26 May 2008) | 6 lines
Fixes issue2791: subprocess.Popen.communicate leaked a file descripton until
the last reference to the Popen instance was dropped. Adding explicit
close() calls fixes it.
Candidate for backport to release25-maint.
........
r63726 | benjamin.peterson | 2008-05-26 22:43:24 +0200 (Mon, 26 May 2008) | 2 lines
fix minor grammar typo
........
r63732 | benjamin.peterson | 2008-05-26 23:44:26 +0200 (Mon, 26 May 2008) | 2 lines
remove duplication in test module
........
r63744 | lars.gustaebel | 2008-05-27 14:39:23 +0200 (Tue, 27 May 2008) | 3 lines
Do not close external file objects passed to tarfile.open(mode='w:bz2')
when the TarFile is closed.
........
r63754 | benjamin.peterson | 2008-05-28 03:12:35 +0200 (Wed, 28 May 2008) | 2 lines
update tutorial function with more appropiate one from Eric Smith
........
r63755 | mark.hammond | 2008-05-28 03:54:55 +0200 (Wed, 28 May 2008) | 2 lines
bdist_wininst now works correctly when both --skip-build and --plat-name are specified.
........
r63757 | georg.brandl | 2008-05-28 13:21:39 +0200 (Wed, 28 May 2008) | 2 lines
#2989: add PyType_Modified().
........
r63758 | benjamin.peterson | 2008-05-28 13:51:41 +0200 (Wed, 28 May 2008) | 2 lines
fix spelling
........
r63760 | georg.brandl | 2008-05-28 17:41:36 +0200 (Wed, 28 May 2008) | 2 lines
#2990: prevent inconsistent state while updating method cache.
........
r63775 | georg.brandl | 2008-05-29 09:18:17 +0200 (Thu, 29 May 2008) | 2 lines
Two fixes in bytearray docs.
........
r63781 | georg.brandl | 2008-05-29 09:38:37 +0200 (Thu, 29 May 2008) | 2 lines
#2988: add note about catching CookieError when parsing untrusted cookie data.
........
r63782 | georg.brandl | 2008-05-29 09:45:26 +0200 (Thu, 29 May 2008) | 2 lines
#2985: allow i8 in XMLRPC responses.
........
r63787 | georg.brandl | 2008-05-29 16:35:39 +0200 (Thu, 29 May 2008) | 2 lines
Revert #2990 patch; it's not necessary as Armin showed.
........
r63805 | raymond.hettinger | 2008-05-30 08:37:27 +0200 (Fri, 30 May 2008) | 1 line
Issue 2784: fix leaks in exception exit.
........
r63806 | raymond.hettinger | 2008-05-30 08:49:47 +0200 (Fri, 30 May 2008) | 1 line
Issue 2855: Fix obscure crasher by slowing down the entire module. Mimics what was done to dictionaries in r59223.
........
r63807 | raymond.hettinger | 2008-05-30 09:16:53 +0200 (Fri, 30 May 2008) | 1 line
Issue 2903: Add __name__ in globals for namedtuple namespace.
........
r63808 | georg.brandl | 2008-05-30 09:54:16 +0200 (Fri, 30 May 2008) | 2 lines
#2999: fix name of third parameter in unicode.replace()'s docstring.
........
r63818 | georg.brandl | 2008-05-30 21:12:13 +0200 (Fri, 30 May 2008) | 2 lines
getloadavg() is not available on Windows.
........
r63819 | georg.brandl | 2008-05-30 21:17:29 +0200 (Fri, 30 May 2008) | 2 lines
Better quote with single quotes.
........
r63823 | benjamin.peterson | 2008-05-30 22:44:39 +0200 (Fri, 30 May 2008) | 2 lines
fix grammar
........
r63824 | marc-andre.lemburg | 2008-05-30 22:52:18 +0200 (Fri, 30 May 2008) | 5 lines
Update the locale module alias table.
Closes #3011.
........
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/setobject.c | 4 | ||||
-rw-r--r-- | Objects/typeobject.c | 19 | ||||
-rw-r--r-- | Objects/unicodeobject.c | 6 |
3 files changed, 16 insertions, 13 deletions
diff --git a/Objects/setobject.c b/Objects/setobject.c index 2fd03af..f760b6a 100644 --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -96,7 +96,9 @@ set_lookkey(PySetObject *so, PyObject *key, register long hash) else { if (entry->hash == hash) { startkey = entry->key; + Py_INCREF(startkey); cmp = PyObject_RichCompareBool(startkey, key, Py_EQ); + Py_DECREF(startkey); if (cmp < 0) return NULL; if (table == so->table && entry->key == startkey) { @@ -127,7 +129,9 @@ set_lookkey(PySetObject *so, PyObject *key, register long hash) break; if (entry->hash == hash && entry->key != dummy) { startkey = entry->key; + Py_INCREF(startkey); cmp = PyObject_RichCompareBool(startkey, key, Py_EQ); + Py_DECREF(startkey); if (cmp < 0) return NULL; if (table == so->table && entry->key == startkey) { diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 6e4ac7a..c139fbc 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -33,7 +33,6 @@ struct method_cache_entry { static struct method_cache_entry method_cache[1 << MCACHE_SIZE_EXP]; static unsigned int next_version_tag = 0; -static void type_modified(PyTypeObject *); unsigned int PyType_ClearCache(void) @@ -48,12 +47,12 @@ PyType_ClearCache(void) } next_version_tag = 0; /* mark all version tags as invalid */ - type_modified(&PyBaseObject_Type); + PyType_Modified(&PyBaseObject_Type); return cur_version_tag; } -static void -type_modified(PyTypeObject *type) +void +PyType_Modified(PyTypeObject *type) { /* Invalidate any cached data for the specified type and all subclasses. This function is called after the base @@ -87,7 +86,7 @@ type_modified(PyTypeObject *type) ref = PyList_GET_ITEM(raw, i); ref = PyWeakref_GET_OBJECT(ref); if (ref != Py_None) { - type_modified((PyTypeObject *)ref); + PyType_Modified((PyTypeObject *)ref); } } } @@ -173,7 +172,7 @@ assign_version_tag(PyTypeObject *type) Py_INCREF(Py_None); } /* mark all version tags as invalid */ - type_modified(&PyBaseObject_Type); + PyType_Modified(&PyBaseObject_Type); return 1; } bases = type->tp_bases; @@ -313,7 +312,7 @@ type_set_module(PyTypeObject *type, PyObject *value, void *context) return -1; } - type_modified(type); + PyType_Modified(type); return PyDict_SetItemString(type->tp_dict, "__module__", value); } @@ -341,7 +340,7 @@ type_set_abstractmethods(PyTypeObject *type, PyObject *value, void *context) int res = PyDict_SetItemString(type->tp_dict, "__abstractmethods__", value); if (res == 0) { - type_modified(type); + PyType_Modified(type); if (value && PyObject_IsTrue(value)) { type->tp_flags |= Py_TPFLAGS_IS_ABSTRACT; } @@ -1520,7 +1519,7 @@ mro_internal(PyTypeObject *type) from the custom MRO */ type_mro_modified(type, type->tp_bases); - type_modified(type); + PyType_Modified(type); return 0; } @@ -5750,7 +5749,7 @@ update_slot(PyTypeObject *type, PyObject *name) update_subclasses() recursion below, but carefully: they each have their own conditions on which to stop recursing into subclasses. */ - type_modified(type); + PyType_Modified(type); init_slotdefs(); pp = ptrs; diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index fc8c8a9..5cd9eb9 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -7524,11 +7524,11 @@ PyObject *PyUnicode_Replace(PyObject *obj, } PyDoc_STRVAR(replace__doc__, -"S.replace (old, new[, maxsplit]) -> str\n\ +"S.replace (old, new[, count]) -> str\n\ \n\ Return a copy of S with all occurrences of substring\n\ -old replaced by new. If the optional argument maxsplit is\n\ -given, only the first maxsplit occurrences are replaced."); +old replaced by new. If the optional argument count is\n\ +given, only the first count occurrences are replaced."); static PyObject* unicode_replace(PyUnicodeObject *self, PyObject *args) |