mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
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. ........
This commit is contained in:
parent
250788453f
commit
f08a9ddcb7
21 changed files with 247 additions and 76 deletions
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue