summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
Diffstat (limited to 'Objects')
-rw-r--r--Objects/setobject.c4
-rw-r--r--Objects/typeobject.c19
-rw-r--r--Objects/unicodeobject.c6
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)