summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorMarc-André Lemburg <mal@egenix.com>2000-06-18 22:25:22 (GMT)
committerMarc-André Lemburg <mal@egenix.com>2000-06-18 22:25:22 (GMT)
commit49ef6dc1f44c6d831fdd5c127b424cb5ecef2b78 (patch)
tree5702c4ebea5d4f5cafe663f460469bb5f5f48a77 /Objects
parent2f4d0e9bb6a1988b59274bd6db980b214fb17d23 (diff)
downloadcpython-49ef6dc1f44c6d831fdd5c127b424cb5ecef2b78.zip
cpython-49ef6dc1f44c6d831fdd5c127b424cb5ecef2b78.tar.gz
cpython-49ef6dc1f44c6d831fdd5c127b424cb5ecef2b78.tar.bz2
Marc-Andre Lemburg <mal@lemburg.com>:
Fixed a bug in PyUnicode_Count() which would have caused a core dump in case of substring coercion failure. Synchronized .count() with the string method of the same name to return len(s)+1 for s.count('').
Diffstat (limited to 'Objects')
-rw-r--r--Objects/unicodeobject.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index e6d2a1a..3157cd8 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -2106,6 +2106,9 @@ int count(PyUnicodeObject *self,
{
int count = 0;
+ if (substring->length == 0)
+ return (end - start + 1);
+
end -= substring->length;
while (start <= end)
@@ -2130,7 +2133,7 @@ int PyUnicode_Count(PyObject *str,
return -1;
substr = PyUnicode_FromObject(substr);
if (substr == NULL) {
- Py_DECREF(substr);
+ Py_DECREF(str);
return -1;
}
@@ -3086,11 +3089,6 @@ unicode_count(PyUnicodeObject *self, PyObject *args)
if (substring == NULL)
return NULL;
- if (substring->length == 0) {
- Py_DECREF(substring);
- return PyInt_FromLong((long) 0);
- }
-
if (start < 0)
start += self->length;
if (start < 0)